Django 模板中 GET 处的 TemplateSyntaxError

TemplateSyntaxError at GET in Django template

我正在处理 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 %}

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

Exception Type: TemplateSyntaxError Exception Value: Could not parse the remainder: '{{' from '{{'

我知道下面的代码有问题

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

如何判断模板中是否有查询?

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

Django 模板变量和标签

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

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

应该是

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

请求参数的使用

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

Django的model,template,view中的template应该只处理信息如何显示,显示什么信息。它不应该创建自己的信息,而这正是您正在做的。

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

//编辑

检查是否存在并使用它

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

  {% 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 %}