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

Django URL跳转异常:categories.html中Href指向错误路径

解决Django中URL跳转错误的问题

这是相对路径导致的典型URL跳转问题,在Django开发里很常见,我来帮你快速搞定!

最推荐的解决方案:使用Django的url模板标签

Django自带的模板标签能完美解决路径适配问题,完全避免硬编码路径的坑。你只需要修改categories.html里的代码,把固定的href替换成{% url %}标签:

<p class="card-text">
  <a href="{% url 'newspaperapp:detail' news.id %}" class="btn btn-sm btn-primary">{{news.title}}</a>
</p>

这里的newspaperapp:detail对应你urls.py里设置的app_name和name='detail',news.id就是要传递的文章ID参数。不管当前页面在哪个路径下,这个标签都会自动生成正确的绝对URL,再也不会跳错位置。

备选方案:使用根路径开头的绝对路径

如果暂时不想用模板标签,也可以把href改成以/开头的绝对路径,强制从网站根目录解析:

<p class="card-text">
  <a href="/newspaperapp/results/detail/{{news.id}}" class="btn btn-sm btn-primary">{{news.title}}</a>
</p>

不过这种方法不够灵活,要是以后修改了app前缀或者URL结构,你得手动修改所有硬编码的路径,所以还是优先推荐第一种模板标签的方案。

为什么会出现这个问题?

核心原因是相对路径的解析规则:

  • 在search.html页面,当前URL是http://127.0.0.1:8000/newspaperapp/results/,相对路径results/detail/会被解析为http://127.0.0.1:8000/newspaperapp/results/detail/,刚好符合预期。
  • 但在categories.html页面,当前URL是http://127.0.0.1:8000/newspaperapp/category/xxx/,相对路径results/detail/会被解析为http://127.0.0.1:8000/newspaperapp/category/results/detail/,自然就跳转到错误页面了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:22:51