如何将自定义Template Tag与Django内置with标签结合使用?
报错原因
Django 的 {% with %} 标签的赋值语法仅支持直接的变量或字面量,不支持直接调用自定义模板标签作为赋值的右值,因此你当前的写法会触发模板语法错误。
解决方法
Django 自定义simple_tag原生支持通过as关键字将返回结果直接存储为模板上下文变量,不需要嵌套在{% with %}的赋值语句中,你不需要修改标签定义,仅调整模板调用逻辑即可。
完整可用模板代码
{% load my_filters %} {% with object as bookmark %} {# 调用自定义标签,用as关键字将返回值存入bookmark_object变量 #} {% get_bookmark_object bookmark.content_type bookmark.object_id as bookmark_object %} {% if bookmark.content_type.model == 'post' %} {% include 'content/post/object.html' with object=bookmark_object user_bookmark=bookmark %} {% elif bookmark.content_type.model == 'note' %} {% include 'content/note/object.html' with object=bookmark_object user_bookmark=bookmark %} {% endif %} {% endwith %}
内容的提问来源于stack exchange,提问作者Jarad
相关产品推荐
相关产品推荐

