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

添加Jazzmin主题后Django admin出现TemplateSyntaxError求助

问题解答

1. 有人在Django 5上使用Jazzmin遇到过此问题吗?

有,而且不止Django 5,从Django 4.0开始官方就移除了length_is模板过滤器,替换为直接用|length == 数值的写法。只要Jazzmin的模板代码还在使用这个已被移除的过滤器,在Django 4.0及以上版本(包括5.x)都会触发这个错误,不少开发者都遇到过相同问题。

2. 是否有已知修复方案或变通方法可在继续使用Jazzmin的情况下解决length_is过滤器错误?

有几种可行的方案:

  • 直接修改Jazzmin模板:找到Jazzmin安装目录中包含错误代码的模板文件(通常是django-jazzmin/templates/admin/includes/fieldset.html),将代码中的line.fields|length_is:'1'替换为line.fields|length == 1,保存后重启服务即可生效。
  • 自定义兼容过滤器:在你的项目中创建一个自定义模板过滤器来模拟旧的length_is功能:
    在任意app下创建templatetags目录(需包含__init__.py),新建文件比如compatibility_filters.py,写入以下代码:
    from django import template
    
    register = template.Library()
    
    @register.filter(name='length_is')
    def length_is(value, arg):
        return len(value) == int(arg)
    
    然后找到Jazzmin对应模板的头部,添加{% load compatibility_filters %},这样就能让模板识别这个过滤器,无需修改原逻辑代码。
  • 使用Jazzmin的修复版本:去Jazzmin的代码仓库查看是否有已合并的修复PR,或者切换到包含该修复的分支/版本。

3. 降级Django或修改Jazzmin模板是否可行?

  • 降级Django:可行,但不推荐。降级到Django 3.x版本可以保留length_is过滤器,避免错误,但会错过Django 4.2及后续版本的新特性、性能优化和安全补丁,长期来看有风险。
  • 修改Jazzmin模板:完全可行,这是最直接且无额外风险的解决方案。唯一需要注意的是,后续升级Jazzmin时,修改过的模板可能会被覆盖,需要重新检查并再次修改,或者将修改后的模板复制到项目的templates目录下(优先级高于第三方包的模板),这样升级时就不会被覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:12:35