【问题标题】:Include variable in Django template loop在 Django 模板循环中包含变量
【发布时间】:2014-11-08 15:39:15
【问题描述】:

我在 Django 模板中有一个 for 循环,它打印出书籍列表,效果很好。当我尝试根据从 views.py 文件传入的值将列表中的一项标记为选中时,问题就出现了:

<select name="b">
    <option value="1">Book</option>
    {% for book in books %}
        <option {% if book.id == selected_book %} selected {% endif %} value="{{ book.id }}">{{ book.t }}</option>
    {% endfor %}
</select>

“books”变量是一个列表,从views.py 文件传入。我可以在循环之外很好地访问这些变量,但是如果我尝试在循环中包含一个单独的变量(“selected_book”),我就会遇到问题。

上面的代码什么都不做,如果我尝试把变量放在双括号中

{{ selected_book }}

我收到以下错误:

TemplateSyntaxError 
Could not parse the remainder: '{{' from '{{'

变量被传递到模板中,因为我可以让它打印到页面上。当我尝试在 for 循环中使用它时,我只会得到一个错误。

如果我写 "{% if book.id == 2 %}" 就可以了。

【问题讨论】:

  • 你需要把"{{ book.id }}"改成{{ book.id }}
  • 确保book.id 确实存在。 “书”是对象列表吗?
  • 图书 ID 不是问题。如果我写 "{% if book.id == 2 %}" 就可以了。
  • 模板代码看起来不错。 selected_book 的值是多少?你确定它是一个整数吗?你也可以发布你的views.py 吗?
  • 好人!你是对的,它是一个字符串。我在views.py文件中将它作为GET参数获取:“request.GET['b']”。将其转换为 int 有效:int(request.GET['b'])。请构建你的答案。

标签: python django django-templates django-views


【解决方案1】:

确保selected_book是整数而不是字符串,否则代码没问题

【讨论】:

    猜你喜欢
    • 2017-03-07
    • 2012-06-11
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    相关资源
    最近更新 更多