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

Django模板语法错误排查及学校列表详情页实现求助

问题1:TemplateSyntaxError 错误修复

错误信息明确指向第10行的{% endblock %}标签不符合预期,要求是{% endfor %}或{% empty %}。这说明你的school_list.html模板里for循环标签闭合错误:

  • 检查模板中{% for %}标签的位置,每个{% for %}必须用{% endfor %}闭合,别误写成{% endblock %}
  • 如果用到了{% empty %}分支,要保证结构完整,示例:
{% for school in schools %}
    <!-- 循环内容 -->
{% empty %}
    <!-- 无数据时的提示内容 -->
{% endfor %}
问题2:实现学校名称跳转详情页功能

1. 配置URL路由

在app的urls.py里添加详情页路由:

from django.urls import path
from . import views

urlpatterns = [
    path('schools/', views.school_list, name='school_list'),
    # 新增详情页路由,用学校主键作为访问参数
    path('schools/<int:pk>/', views.school_detail, name='school_detail'),
]

2. 编写详情页视图

在Views.py里添加处理详情页的视图:

from django.shortcuts import render, get_object_or_404
from .models import School

def school_detail(request, pk):
    # 根据主键获取学校,不存在则返回404
    school = get_object_or_404(School, pk=pk)
    return render(request, 'basic_app/school_detail.html', {'school': school})

# 用类视图的写法更简洁:
# from django.views.generic.detail import DetailView
# class SchoolDetailView(DetailView):
#     model = School
#     template_name = 'basic_app/school_detail.html'

3. 修改列表模板实现跳转

在school_list.html里把学校名称改成可点击的链接,用Django的{% url %}标签生成详情页地址:

{% extends 'basic_app/basic_app_base.html' %}

{% block body_block %}
    <h1>学校列表</h1>
    {% for school in schools %}
        <h2><a href="{% url 'school_detail' pk=school.pk %}">{{ school.name }}</a></h2>
        <p>地址:{{ school.address }}</p>
        <hr>
    {% endfor %}
{% endblock %}

4. 确认模型字段完整性

检查models.py里的School模型,确保包含必要字段:

from django.db import models

class School(models.Model):
    name = models.CharField(max_length=256)
    address = models.CharField(max_length=256)
    # 其他自定义字段...

    def __str__(self):
        return self.name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:35:31