You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 3.2.9能否将include模板作为变量传入default过滤器?

在Django 3.2.9中使用include模板作为default过滤器的默认值是否可行?

可以实现这个功能,你给出的示例代码写法是正确的,Django 3.2.x完全支持通过{% include ... as %}语法将模板渲染后的内容存储为变量,并传递给default过滤器作为默认值。

关键细节说明

  • {% include 'blog/userprofile_deleted.html' as deleted_profile %}会将指定模板渲染后的HTML内容以字符串形式赋值给deleted_profile变量,这个变量可以直接作为default过滤器的参数使用。
  • 注意过滤器顺序:如果userprofile_deleted.html模板的输出需要避免自动转义,有两种处理方式:
    1. 将safe过滤器放在default之后,确保默认内容也能正常渲染HTML:
      {{ user.profile.bio | default:deleted_profile | safe }}
      
    2. 在include时添加is_safe=True参数,告知Django该模板的输出是安全的,无需转义(适合你确认模板内容可信的场景):
      {% include 'blog/userprofile_deleted.html' as deleted_profile with is_safe=True %}
      {{ user.profile.bio | safe | default:deleted_profile }}
      
  • 相比你当前使用的单行字符串写法,用独立模板文件的方式优势明显:不仅更易维护长HTML内容,还能正常解析模板内的标签(比如{% url %})——而你当前单行字符串中的{% url "register" %}是不会被Django解析的,只会作为纯文本输出。

修正后的示例代码

<div class="row max-h-200 overflow-hidden">
    {% include 'blog/userprofile_deleted.html' as deleted_profile %}
    {{ user.profile.bio | default:deleted_profile | safe }}
</div>

内容的提问来源于stack exchange,提问作者Krabs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:50:45