这是我的代码:
{% if {{post.author.profile.image.url}} is None %}当我运行这段代码时,我得到一个错误
Could not parse the remainder: '{{post.author.profile.image.url}}' from '{{post.author.profile.image.url}}'如何解决这个问题?以及如何在模板标记内使用模板标记
发布于 2019-07-01 21:02:06
直接使用expression的值,你不应该把它放在大括号里:
{% if post.author.profile.image.url is None %}
...
{% endif %}发布于 2019-07-01 21:26:09
abdusco已经回答了你问题的第一部分(“如何解决这个问题”)。
wrt/第二部分:
如何在模板标记内使用模板标记
简单的答案是:你不能,句号。一旦你理解了模板系统是如何工作的,为什么这是不可能的就会变得相当明显,而且这几乎是无用的(如果你发现自己试图在一个标签中使用一个标签,那么你就做错了,真的有更好的方法)。
注:当我说你不能嵌套标签时,我的意思是你不能这样做:
{% sometag arg={% some_other_tag %} %}现在,在您的示例中,您要做的不是“在标记中使用标记”,而是在标记中使用上下文变量,这当然是可能的(否则模板语言将很难使用),如abdusco的答案所示。你也可以在这里使用过滤器表达式(将过滤器应用于上下文变量),即{% mytag some.variable|upper %},至少在模板标签被正确实现的情况下。
发布于 2019-07-02 16:19:47
第一个问题已经回答了。关于这一点:
以及如何在模板标记内使用模板标记
简短的回答:你不能。长的答案:你可以在‘块分配’标签( http://jinja.pocoo.org/docs/2.10/templates/#block-assignments )的帮助下:
{% set somevar %}
... any number of tags here {{ post.author.profile.image.url }} ...
{% endset %}
...
{% if somevar is None %} ... {% endif %}您还可以(从Jinja2 2.10开始)将过滤器应用于分配:
{% set somevar | default('Empty') %}
... any number of tags here {{ post.author.profile.image.url }} ...
{% endset %}https://stackoverflow.com/questions/56836142
复制相似问题