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

Django出现Reverse for 'topic'反向路由匹配错误如何解决

报错原因

你的路由配置urls.py和视图函数views.py逻辑本身没有问题,报错根源在topics.html模板的变量引用错误:

  • 你在模板中写的循环是{% for topic in topics %},循环内单个主题对象的变量名是topic
  • 但反向生成链接时你传入的参数是topics.id:topics是视图传递的整个主题查询集(集合对象),本身不存在id属性,Django模板解析该属性时会拿到空值,相当于给要求传入数字类型topic_id的路由传了空字符串,最终触发反向解析匹配失败的报错。
修复方案

只需要修改topics.html中url标签的传入参数,把集合对象topics改成循环内的单个主题实例topic即可。
修正后的对应模板代码段:

{% extends "learning_logs/base.html" %}

{% block content %} 

    <p>Topics</p>

    <ul>
        {% for topic in topics %}
            <li>
                <a href = "{% url 'topic' topic.id %}">{{ topic }}</a>
            </li>
        {% empty %} 
            <li>No topics have been added yet.</li>
        {% endfor %}
    </ul>

{% endblock content %}

修改完成后刷新页面,每个主题链接会自动拼接对应主题的数字ID(格式为/topics/数字ID/),和路由规则完全匹配,报错就会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:54:26