Django应用添加reply按钮时触发TemplateSyntaxError错误求助
Django模板语法错误:
ifequal标签无效问题修复 我正在为Django Web应用配置回复按钮,使用django-messages库,已将Django及相关Python库更新至最新版本。此前功能运行正常,添加回复按钮后页面报错。
报错信息
django.template.exceptions.TemplateSyntaxError: Invalid block tag on line 73: 'ifequal', expected 'empty' or 'endfor'. Did you forget to register or load this tag?
原模板代码(inbox.html)
{% load static %} {% block content %} {% if user.is_authenticated %} {% load i18n %} {% if message_list %} <section class="sidebar"> <div class="sidebar--inner"> <div class="is-settings--parent"> <div class="sidebar-menu"> <ul> <li class="inboxItem isActive"><a href="#0">Inbox (<span class="numCount"></span>) </a></li> <li class="sentItem"><a href="#0">Sent</a></li> <li class="spamItem"><a href="#0">Spam</a></li> <li class="trashItem"><a href="#0">Trash</a></li> </ul> </div> </div> </div> </section> <section class="view"> <section class="emails is-component"> <div class="emails--inner"> <div> <h1 class="email-type">Inbox</h1> {% for message in message_list %} <div class="inbox"> <div class="email-card"> <div class="is-email--section has-img"> <div class="sender-img" style=""> </div> </div> <div class="is-email--section has-content"> <div class="sender-inner--content"> <p class="sender-name">From: {{ message.sender.username }}</p> <p class="email-sum">Subject: <a href="{{ message.get_absolute_url }}"> {{ message.subject }}</a></p> <p class="email-sum">Time: {{ message.sent_at|date:_("DATETIME_FORMAT") </p> </div> </div> <div class="email-action"> <span> <a href="{% url 'messages_delete' message.id %}"> <img src="https://gmailapp.surge.sh/assets/images/trashcan.png" alt="" class="action-icon trash"> </a> </span> <!-- This line: --> {% ifequal message.recipient.pk user.pk %} <span> <a href="{% url 'messages_reply' message.id %}"> <img src="" alt="" class="action-icon"> </a> </span> {% endifequal %} </div> </div> </div> {% endfor %} </div> </div> </section> {% endif %} {% endblock %}
问题分析
ifequal是Django旧版本的模板标签,在Django 1.10版本后已被废弃,最新版本的Django不再支持该标签,因此触发语法错误。- 模板中存在一处未闭合的模板变量:
<p class="email-sum">Time: {{ message.sent_at|date:_("DATETIME_FORMAT") </p>缺少闭合的}},会导致额外的模板解析问题。
修复方案
1. 替换废弃的ifequal标签
将原代码中的:
{% ifequal message.recipient.pk user.pk %} <span> <a href="{% url 'messages_reply' message.id %}"> <img src="" alt="" class="action-icon"> </a> </span> {% endifequal %}
修改为标准的if比较语法:
{% if message.recipient.pk == user.pk %} <span> <a href="{% url 'messages_reply' message.id %}"> <img src="" alt="" class="action-icon"> </a> </span> {% endif %}
2. 修复未闭合的模板变量
将时间显示的行修改为:
<p class="email-sum">Time: {{ message.sent_at|date:_("DATETIME_FORMAT") }}</p>
内容的提问来源于stack exchange,提问作者Davor_Python
相关产品推荐
相关产品推荐

