如何在jinja标签中使用jinja标签

2021-04-11 15:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

{% if {{post.author.profile.image.url}} is None %}

当我运行这个代码时,我得到一个错误

^{pr2}$

如何解决这个问题?以及如何在模板标记中使用模板标记

3条回答
网友
1楼 ·

abdusco已经回答了你问题的第一部分(“如何解决这个问题”)。在

wrt/第二部分:

how to use a template tag inside a template tag

简单的回答是:你不能,句号。一旦你理解了模板系统的工作原理,为什么不可能做到这一点就变得非常明显了,而且这基本上是没有用的(如果你发现自己试图在一个标记中使用一个标记,那么你就错了,还有更好的方法,真的)。在

注:我说你不能嵌套标签,我的意思是你不能这样做:

{% sometag arg={% some_other_tag %} %}

现在在您的例子中,您要做的不是“在标记中使用标记”,而是在标记中使用一个上下文变量,这当然是可能的(否则模板语言将很难使用),如abdusco的答案所示。您还可以在这里使用过滤器表达式(对上下文变量应用过滤器),即{% mytag some.variable|upper %},至少在模板标记正确实现的情况下。在

网友
2楼 ·

直接使用表达式的值,不应将其括在大括号内:

{% if post.author.profile.image.url is None %}
   ...
{% endif %}
网友
3楼 ·

第一个问题已经回答了。关于这个问题:

And how to use a template tag inside a template tag

{回答:你不能用短的标签回答你的问题:

{% set somevar %}
... any number of tags here {{ post.author.profile.image.url }} ...
{% endset %}
...
{% if somevar is None %} ... {% endif %}

您也可以(从Jinja2.10开始)对赋值应用过滤器:

^{pr2}$

相关问题