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

Django模板分页时出现TemplateSyntaxError:无法解析'|'字符

问题排查与解决

错误根源分析

你的模板代码存在三个关键问题,直接触发了TemplateSyntaxError:

  1. Django模板过滤器语法错误:过滤器|前后不能加空格,比如page_obj.number | add:'-3'这种写法会让模板引擎无法正确解析过滤器逻辑。
  2. 变量名笔误:page.obj.number是错误写法,正确变量名应为page_obj.number(把.obj改为_obj)。
  3. 分页链接路径错误:Previous、Next、Last按钮的href未拼接?page=参数,会导致跳转路径错误。

修正后的模板代码

{% extends "blog/base.html" %}
{% block content %}
    {% for post in posts %}
        <article class="media content-section">
          <img class="rounded-circle article-img" src="{{ post.author.profile.image.url }}">
          <div class="media-body">
            <div class="article-metadata">
              <a class="mr-2" href="#">{{ post.author }}</a>
              <small class="text-muted">{{ post.date_posted|date:"F d, Y" }}</small>
            </div>
            <h2><a class="article-title" href="{% url 'post_detail' post.id %}">{{ post.title }}</a></h2>
            <p class="article-content">{{ post.content }}</p>
          </div>
        </article>
    {% endfor %}

    {% if is_paginated %}
        {% if page_obj.has_previous %}
          <a class="btn btn-outline-info mb-4" href="?page=1">First</a>
          <a class="btn btn-outline-info mb-4" href="?page={{ page_obj.previous_page_number }}">Previous</a>
        {% endif %}

        {% for num in page_obj.paginator.page_range %}
          {% if page_obj.number == num %}
            <a class="btn btn-info mb-4" href="?page={{ num }}">{{num}}</a>   
          {% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}  
            <a class="btn btn-outline-info mb-4" href="?page={{ num }}">{{num}}</a>   
          {% endif %}
        {% endfor %}

        {% if page_obj.has_next %}
          <a class="btn btn-outline-info mb-4" href="?page={{ page_obj.next_page_number}}">Next</a>
          <a class="btn btn-outline-info mb-4" href="?page={{ page_obj.paginator.num_pages }}">Last</a>
        {% endif %}
    {% endif %}
{% endblock content %}

关键修正点说明

  • 移除过滤器|前后的空格,改为page_obj.number|add:'-3'的标准写法
  • 修正变量名笔误:page.obj.number → page_obj.number
  • 为分页按钮的href补充?page=参数,确保跳转路径符合分页逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:14:59