86

这是我在模板中的代码。

{% if 'index.html' in  "{{ request.build_absolute_uri  }}" %} 
    'hello'
{% else %}      
    'bye'
{% endif %}

现在我的 url 值目前是"http://127.0.0.1:8000/login?next=/index.html"

即使"index.html"在字符串中它仍然打印再见。

当我在 python shell 中运行相同的代码时,它可以工作。不知道是什么错误。

4

3 回答 3

145

尝试删除多余的{{...}}标签和"..."引号request.build_absolute_uri,它对我有用。

由于您已经在{% if %}标签内,因此无需request.build_absolute_uri{{...}}标签包围。

{% if 'index.html' in request.build_absolute_uri %}
    hello
{% else %}
    bye
{% endif %}

由于引号,您实际上是在搜索字符串"{{ request.build_absolute_uri }}",而不是您想要的评估的 Django 标记。

于 2013-10-28T06:08:44.230 回答
12

也许为时已晚,但这是一个轻量级版本:

{{ 'hello 'if 'index.html' in request.build_absolute_uri else 'bye' }}

这可以用 Jinja 进行测试:

>>> from jinja2 import Template
>>> t = Template("{{ 'hello 'if 'index.html' in request.build_absolute_uri else 'bye' }}")
>>> request = {}
>>> request['build_absolute_uri']='...index.html...'
>>> t.render(request=request)
'hello '
>>> request['build_absolute_uri']='something else...'
>>> t.render(request=request)
'bye'
>>> 
于 2018-04-12T06:44:55.337 回答
1

我正在添加“不包含”的否定选项:

{% if 'index.html' not in request.build_absolute_uri %}
    hello
{% else %}
    bye
{% endif %}

和:

{{ 'hello 'if 'index.html' not in request.build_absolute_uri else 'bye' }}

于 2022-01-27T11:52:05.707 回答