首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jinja标签中使用jinja标签

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

Stack Overflow用户
提问于 2019-07-01 20:56:22
回答 3查看 2.6K关注 0票数 2

这是我的代码:

代码语言:javascript
复制
{% if {{post.author.profile.image.url}} is None %}

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

代码语言:javascript
复制
Could not parse the remainder: '{{post.author.profile.image.url}}' from '{{post.author.profile.image.url}}'

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

EN

回答 3

Stack Overflow用户

发布于 2019-07-01 21:02:06

直接使用expression的值,你不应该把它放在大括号里:

代码语言:javascript
复制
{% if post.author.profile.image.url is None %}
   ...
{% endif %}
票数 5
EN

Stack Overflow用户

发布于 2019-07-01 21:26:09

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

wrt/第二部分:

如何在模板标记内使用模板标记

简单的答案是:你不能,句号。一旦你理解了模板系统是如何工作的,为什么这是不可能的就会变得相当明显,而且这几乎是无用的(如果你发现自己试图在一个标签中使用一个标签,那么你就做错了,真的有更好的方法)。

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

代码语言:javascript
复制
{% sometag arg={% some_other_tag %} %}

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

票数 0
EN

Stack Overflow用户

发布于 2019-07-02 16:19:47

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

以及如何在模板标记内使用模板标记

简短的回答:你不能。长的答案:你可以在‘块分配’标签( http://jinja.pocoo.org/docs/2.10/templates/#block-assignments )的帮助下:

代码语言:javascript
复制
{% set somevar %}
... any number of tags here {{ post.author.profile.image.url }} ...
{% endset %}
...
{% if somevar is None %} ... {% endif %}

您还可以(从Jinja2 2.10开始)将过滤器应用于分配:

代码语言:javascript
复制
{% set somevar | default('Empty') %}
... any number of tags here {{ post.author.profile.image.url }} ...
{% endset %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56836142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档