【问题标题】:TemplateSyntaxError at GET in Django templateDjango 模板中 GET 处的 TemplateSyntaxError
【发布时间】:2021-09-08 16:42:25
【问题描述】:

我正在处理 Django 模板并设置条件分支是否存在“查询”。

  {% if {{ request.GET.query }} == "" %}
  <td><a href="/detail/{{item.id}}/{{item.item_hs6}}">detail</a></td>
  {% else %}
  <td><a href="/detail/{{item.id}}/{{item.item_hs6}}/{{ request.GET.query }}">detail</a></td>
  {% endif %}

当我执行上面的代码时,这里出现错误。

异常类型:TemplateSyntaxError 异常值:无法解析 余数:'{{' from '{{'

我知道下面的代码有问题

{% if {{ request.GET.query }} == "" %}

如何判断Template中是否有查询?

我刚刚在此问题中提到了上述设置,但如果需要更多代码,请告诉我,我将使用该信息更新我的问题。谢谢

【问题讨论】:

  • 这能回答你的问题吗? Django -- Template tag in {% if %} block
  • 你好@daylyroppo3 你不必在{% if %} 中使用{{}},只需像这样使用{% if request.GET.query == "" %}
  • 判断查询是否存在的最佳方法只是这样做{% if not request.GET.query %},如果它是None,或者如果它是"",它将返回False

标签: python django django-rest-framework django-templates django-tagging


【解决方案1】:

Django 模板变量和标签

在 Django 模板标签中,您可以直接访问变量。不需要另一个 Jinja 标签来声明变量。

{% if {{ request.GET.query }} == "" %}

应该是

{% if request.GET.query == "" %}

请求参数的使用

如果我正确理解您的模板,您就是在您的页面上直接反映来自请求的信息。这应该被视为一个安全问题

django的model,template,view中的模板应该只处理信息如何显示和显示什么信息。它不应该创建自己的信息,这就是您正在做的事情。

您应该让创建视图的人处理请求。只要确保您获得模板的必要上下文,就可以实现您的设计目标。

//编辑

检查存在并使用它

请谨慎使用!我不建议在模板中这样做,这只是为了展示访问权限。

  {% if "query" in request.GET %}
  <td><a href="/detail/{{item.id}}/{{item.item_hs6}}/{{ request.GET.get('query') }}">detail</a></td>
  {% else %}
  <td><a href="/detail/{{item.id}}/{{item.item_hs6}}">detail</a></td>
  {% endif %}

【讨论】:

  • @daylyroppo3 另一个补充:如果你想检查你的参数 query 是否在请求 GET 参数中,你应该使用if x in y,因为它是一个 QueryDict。我会在帖子中更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 2017-01-09
  • 2023-03-06
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
相关资源
最近更新 更多