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

Django出现NoReverseMatch错误:无法匹配'by_person'路由参数

问题修复方案

1. 修复URL配置的语法错误

你的by_person路由缺少参数的闭合尖括号,导致Django无法正确解析路由规则,这是触发NoReverseMatch的核心原因。
修改URL配置为:

urlpatterns = [
    path('person/<int:person_pk>/', by_person, name='by_person'),  # 补上闭合尖括号,末尾加斜杠符合Django规范
    path('', people, name='people'),
]

2. 修正模板中的拼写错误

模板扩展路径里的laayout是拼写错误,改成正确的layout:

{% extends 'layout/basic.html' %}
{% block content %}
<li><a href="{% url 'people' %}">Main page</a></li>
{% for per in people %}
    <h1><a href="{% url 'by_person' per.pk %}">{{ per }}</a></h1>
{% endfor %}
{% endblock content %}

3. 修复视图函数的语法问题

视图函数的类型提示错误,同时调整变量名避免潜在混淆:

from django.shortcuts import render
from django.http import HttpResponse
from .models import Adult  # 确保导入对应的Adult模型

def people(request) -> HttpResponse:
    people_list = Adult.objects.all()
    template_ = 'people.html'
    context = {
        'people': people_list,
    }
    return render(request, template_, context=context)

额外检查项

  • 确保Adult模型已完成数据库迁移,且数据库中存在有效数据(查询集为空不会触发当前错误,但会导致列表无内容)
  • 确认by_person视图函数已正确定义并接收person_pk参数:
    def by_person(request, person_pk):
        adult = Adult.objects.get(pk=person_pk)
        return render(request, 'person_detail.html', {'adult': adult})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:10:49