如何在 django 中遍历数字

Posted

技术标签:

【中文标题】如何在 django 中遍历数字【英文标题】:How to iterate through numbers in django 【发布时间】:2020-11-26 22:26:52 【问题描述】:

我是 Django 新手。我只想根据用户提供的详细信息构建在线简历。 我有单独的 html 文件用于获取用户输入和显示简历。 我将用户输入用于认证字段,如下所示:

<div class="box"><input type="text" name="certificate1" placeholder="Certificate-name"> <input type="text" name="institute1" placeholder="Institute-name"></div><br>
    <div class="box"><input type="text" name="certificate2" placeholder="Certicate-name">  <input type="text" name="institute2" placeholder="Institute-name"></div><br>
    <div class="box"><input type="text" name="certificate3" placeholder="Certicate-name">  <input type="text" name="institute3" placeholder="Institute-name"></div><br>
    <div class="box"><input type="text" name="certificate4" placeholder="Certicate-name">  <input type="text" name="institute4" placeholder="Institute-name"></div><br>
    <div class="box"><input type="text" name="certificate5" placeholder="Certificate-name">  <input type="text" name="institute5" placeholder="Institute-name"></div><br>
    <div class="box"><input type="text" name="certificate6" placeholder="Certicate-name">  <input type="text" name="institute6" placeholder="Institute-name"></div><br>

我在views.py文件中写的代码是这样的:

if(request.method=="POST"):
    dictionary = str(i):request.POST[i].capitalize() for i in request.POST
    return render(request,"form/resume.html",dictionary)

我为在简历中显示证书而编写的代码是这样的:

% if certificate1 %
    <li>certificate1, institute1</li>
    % endif %
    % if certificate2 %
    <li>certificate2, institute2</li>
    % endif %
    % if certificate3 %
    <li>certificate3, institute3</li>
    % endif %
    % if certificate4 %
    <li>certificate4, institute4</li>
    % endif %
    % if certificate5 %
    <li>certificate5, institute5</li>
    % endif %
    % if certificate6 %
    <li>certificate6, institute6</li>
    % endif %

但我觉得我在简历 [2nd code] 中显示证书时编写的代码效率不高。有没有其他方法可以编写第二个代码?我想知道,如果可能,我们如何使用 for 循环。或者还有其他方法吗?提前感谢您的宝贵回答。

【问题讨论】:

【参考方案1】:

您可以将所有数据分组到一个数组中并将它们传递到您的渲染函数中,以便您可以在 Jinja 模板中对其进行迭代

【讨论】:

我使用了很多领域,比如技能、教育、成就、项目细节等等。对于每个字段,我最多有 5 个答案。因此,我只是通过在 views.py 文件中使用 for 循环将它们存储在字典中。请检查我编辑的问题一次。【参考方案2】:

将证书作为列表发送到模板,如下所示:

certificates = [
     "certificate": certificate1, "institute": institute1,
     "certificate": certificate2, "institute": institute2
]

然后在模板中,显示如下:

% for c in certificates %
    <li>c.certificate, c.institute</li>
% endfor %

【讨论】:

我使用了很多领域,比如技能、教育、成就、项目细节等等。对于每个字段,我最多有 5 个答案。因此,我只是通过在 views.py 文件中使用 for 循环将它们存储在字典中。请检查我编辑的问题一次。 @VallamkondaNeelima 即使这样,您也可以只使用列表进行迭代并将字典添加到其中作为列表元素,如下所示:dictionary = [str(i):request.POST[i].capitalize() for i in request.POST]。这也将允许在模板中使用循环。【参考方案3】:

尝试使用数组,这样您就可以轻松地遍历它。 或者如果你只是想这样写 对变量名使用字符串连接,例如:

% for x in '123456' %
    % with y=forloop.counter|stringformat:"s" %
    % with names="certificate"|add:y %
        % if names %
          <li> name </li>
        % endif %
    % endwith %
    % endwith %
% endfor %

有关更多信息,请参阅此内容: How can I concatenate forloop.counter to a string in my django template

【讨论】:

正如我所见,您已经编辑了问题...您正在将 dict 发送到模板。所以使用 for 循环遍历它。% for key, values in certificate.items %keyvalue% endfor % 但是现在 certificate1 不是一个变量,它是一个字符串——“certificate1”,上面的代码显示certificate1 certificate2 certificate3 等等,但不是views.py 中提供的它们的值

以上是关于如何在 django 中遍历数字的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 中使用模型清理方法并遍历字段

如何遍历 Django 字典中的外键?

如何使用 Django 模型中的函数遍历 SQL 数据库?

django ModelChoiceField:如何遍历模板中的实例?

Django:如何遍历 html 中的嵌套 Json 对象

如何遍历 Django 模板中的字典?