Django模板报错:Did you forget to register or load this tag? 问题排查求助
解决Django模板中移除最后一个
<li>才正常的问题 嘿,我碰到过类似的情况,来帮你排查下可能的问题!
从你提供的代码来看,移除最后一个Logout的<li>标签就不报错,大概率是这个<li>内部的模板语法或者URL配置出了问题,或者是整个条件判断里的转义字符导致解析异常,给你几个排查方向:
1. 检查{% url 'logout' %}的URL配置
Django模板里的{% url %}标签需要对应的URL在urls.py中正确定义,比如你得有类似这样的配置:
# urls.py from django.contrib.auth.views import LogoutView path('logout/', LogoutView.as_view(), name='logout')
如果'logout'这个name不存在,模板渲染时会抛出NoReverseMatch错误,而移除这个<li>就不会触发这个错误。你可以先单独渲染这个URL标签试试,比如在模板里临时加一行{% url 'logout' %},看看会不会直接报错。
2. 替换条件判断里的转义双引号
你代码里的"是HTML转义的双引号,但在Django模板中直接使用普通双引号就可以,转义字符可能让模板解析器误判条件的边界。把条件行改成这样:
{% if request.get_full_path != "/addAssest/" and request.user.is_authenticated %}
(顺便提一句,addAssest可能是拼写错误,应该是addAsset?不过这不会直接导致渲染错误,只是路径匹配可能有问题)
3. 检查模板标签的闭合
虽然你提供的代码里{% if %}和{% endif %}看起来是闭合的,但有时候如果父模板里有未闭合的标签,或者这个模板被包含在其他模板中时,可能会出现嵌套错误。你可以把这段代码单独放到一个测试模板里渲染,看看是否正常,排除其他模板的影响。
修改后的示例代码
{% if request.get_full_path != "/addAssest/" and request.user.is_authenticated %} <div class="sidebar" style="height: 35%"> <div class="sidebar-wrapper"> <div class="logo"> <a target="_blank" href="#" class="simple-text logo-mini" > CC </a> <a target="_blank" href="#" class="simple-text logo-normal" > Crypto Castle </a> </div> <ul class="nav"> <li class="{% if 'index' in segment %} active {% endif %}"> <a href="/"> <i class="tim-icons icon-chart-pie-36"></i> <p>Dashboard</p> </a> </li> <li class="{% if 'page-user' in segment %} active {% endif %}"> <a href="{% url 'profilePage' %}"> <i class="tim-icons icon-single-02"></i> <p>User Profile</p> </a> </li> <li class="{% if 'logout' in segment %} active {% endif %}"> <a href="{% url 'logout' %}"> <i class="tim-icons icon-user-run"></i> <p>Logout</p> </a> </li> </ul> </div> </div> {% endif %}
先试试上面的方法,应该能解决你的问题!
内容的提问来源于stack exchange,提问作者yonatan hornstein
相关产品推荐
相关产品推荐

