0

我正在研究 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中是否有查询?

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

4

1 回答 1

0

Django 模板变量和标签

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

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

应该

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

请求参数的使用

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

Django的模型、模板、视图中的模板应该只处理信息如何显示和显示什么信息。它不应该创建自己的信息,这就是您正在做的事情。

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

//编辑

检查存在并使用它

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

  {% 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 %}
于 2021-06-25T09:24:57.963 回答