【问题标题】:Could not parse the remainder in Django If/else statements in templates无法解析模板中 Django If/else 语句中的剩余部分
【发布时间】:2021-05-04 15:32:49
【问题描述】:

我有几个 if/else 语句,无论页面上存在什么页面或其他内容,它们似乎都返回相同的解析错误。

出于所有意图和目的,它已经变得愚蠢了。我的实际逻辑是有道理的,别担心,我只想知道我的语法是什么导致了这个问题:

<div>
    {% if True and 10 - 1 > 5 %}
        <p>1</p>
    {% else %}
        <p>2</p>
    {% endif %}
</div>

当我执行上述操作时,我希望它显示 &lt;p&gt;1&lt;/p&gt; 标记,而是返回“TemplateSyntaxError at” URL,无法解析余数:来自 '-' 的 '-'。

【问题讨论】:

  • 所以,它基本上是因为你不能使用模板 if 块像普通 python if 块一样。而且因为你在里面执行一些数学运算..它无法解析 - 减号无论是用于 html 还是什么......所以要做这些加减法......djnago 有模板标签......你可能应该使用那些

标签: django python-3.6 django-3.2


【解决方案1】:

默认情况下,django 模板不允许additionsubtraction等数学运算。

我建议在你的视图函数中进行数学运算并将其渲染到模板中,然后直接使用它 示例:

def my_view(request):
    result = 10 - 1
    render(request, template, context={'my_result': result})

然后在模板中你会做类似的事情

{% if True and my_result > 5 %}

【讨论】:

  • 我知道这应该是最佳实践,并且是“正确”的答案。感谢您提供背景信息。我的用例虽然没有在上面添加,但对我在控制器中无权访问的数据进行迭代,以每次检查所述数据注入真或假。实际上,以下内容对我的帮助更大,但鉴于我提出的问题,我承认这是首选。
【解决方案2】:
<div>
    {% if True and 10|add:'-1' > 5 %}
        <p>1</p>
    {% else %}
        <p>2</p>
    {% endif %}
</div>

代码10|add:'-1' 表示 10 + (-1)

【讨论】:

  • 如果可以,我会投票,但声望不够。我发现这是最有帮助的,也是我最终解决问题的方式,但我承认这是最老套的方式。无论如何想谢谢你。
猜你喜欢
  • 2016-04-03
  • 1970-01-01
  • 2016-06-13
  • 2015-05-05
  • 2017-11-18
  • 1970-01-01
  • 2011-07-11
  • 2015-03-06
  • 2015-12-31
相关资源
最近更新 更多