Django模板TemplateSyntaxError报错:else标签不符合预期求助
解决Django模板TemplateSyntaxError:Invalid block tag on 'else',expected 'endblock'
你的模板代码本身语法是正确的,报错的核心原因大概率是base.html中的content块存在未闭合的模板标签,比如未收尾的{% if %}、{% for %}等,导致Django解析模板时,把你login.html里的{% else %}误认为是base中某个未闭合标签的分支,进而判定当前content块应该结束,抛出错误。
解决步骤:
- 检查
base.html的{% block content %}块:逐一核对里面的模板标签,确保所有需要闭合的标签(如{% if %}→{% endif %}、{% for %}→{% endfor %})都正确配对闭合,不能有未完成的标签残留。 - 简化测试定位:暂时把
login.html的content块内容替换成简单文本(比如<p>测试渲染</p>),如果能正常显示,再逐步回加原代码,找到触发错误的具体部分。 - 确认标签拼写:确保
login.html里的{% else %}、{% endif %}、{% endblock %}等标签拼写无误,没有多余空格或符号。
你的模板代码本身无语法问题(中文适配版供参考):
{% extends 'base.html' %} {% block content %} {% if not request.user.is_authenticated %} <div style="margin-top: 30px"> <form method="POST"> {% csrf_token %} {% if error %} <p style="color: red">{{error}}</p> {% endif %} <div> <input type="text" name="username" placeholder="用户名" /> </div> <div> <input type="password" name="password" placeholder="密码" /> </div> <button type="submit">登录</button> </form> </div> {% else %} <p> 你已经登录了,要不要<a href="/logout/">退出登录?</a> </p> {% endif %} {% endblock content%}
内容的提问来源于stack exchange,提问作者ERKIN
相关产品推荐
相关产品推荐

