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

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 %}

问题分析

  1. ifequal是Django旧版本的模板标签,在Django 1.10版本后已被废弃,最新版本的Django不再支持该标签,因此触发语法错误。
  2. 模板中存在一处未闭合的模板变量:<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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:48:51