【问题标题】:What are {% if error_message %}, {{ forloop.counter }} and choice_set.all things in Django form template?Django 表单模板中的 {% if error_message %}、{{ forloop.counter }} 和choice_set.all 是什么?
【发布时间】:2016-04-25 11:43:29
【问题描述】:

人!我正在做 Django 教程。

https://docs.djangoproject.com/en/1.9/intro/tutorial04/#write-a-simple-form

我被困在这里。这是detail.html模板代码:

<h1>{{ question.question_text }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>

我不明白这些事情:

  • {% if error_message %}
  • {{ forloop.counter }}
  • 在 question.choice_set.all 值为choice_set.all。它来自哪里?

本教程的单独步骤看起来很清晰,但随后出现了一些代码的和平和我正在做的事情的清晰性消失了。

提前致谢。

【问题讨论】:

    标签: django-templates


    【解决方案1】:

    我知道这有点太晚了(5 个月前),但这里是谁可能读到的答案(我,即):

    • {% if error_message %} 表示如果我们在视图中定义了error_message 变量,则模板将显示开头{% if error_message %}{% endif %} 之间的所有内容

    • {{ forloop.counter }} 似乎相当于经典的i 值,在 PHP、C、C# 等中经常遇到使用 for(int i = 0; i &lt; looptime; i++) 的值。这个值是一个整数,它将被设置为它的值加一个每个周期,它从 0 开始。所以在第一个周期中,i = 0 在第二个周期中 i = 1 等等......这里,iforloop.counter (或者更准确地说是forloop 对象的counter 属性,它可能包含有关forloop 的更多信息。查看文档以了解更多信息)。

    • question.choice_set.all 中,值choice_set.allchoice_set.all 来自您在教程开始时学习使用的Django 的DB API(第2 部分|| 3)。与question.choice_set.all() 相同:它将列出与此问题相关的选项。有关此关系的更多信息,请查看Django tutorial: What is choice_set?

    希望我的回答能让你明白,我也是 Django 框架的新手:我是 3 天前开始的,我正在阅读教程的第 3 部分,所以我的回答可能不完全正确 kappa

    【讨论】:

      猜你喜欢
      • 2015-10-23
      • 2010-11-16
      • 2022-08-07
      • 2019-02-26
      • 2019-04-16
      • 2014-07-23
      • 1970-01-01
      • 2011-01-30
      • 2020-02-04
      相关资源
      最近更新 更多