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

Django站点路径异常:访问详情页后导航栏跳转错误

问题解决:Django导航栏相对路径导致URL错误

问题根源

导航栏里的<a>标签使用了相对路径href="luokat",当你处于website/näytä_luokka/<luokka_id>页面时,浏览器会把这个相对路径拼接到当前URL后面,最终变成website/näytä_luokka/luokat,而非正确的根级路径website/luokat。

解决方案

方法1:使用绝对路径(简单直接)

把导航栏里的href改成以斜杠开头的绝对路径:

<li class="nav-item">
  <a class="nav-link" href="/website/luokat">Luokat</a>
</li>

注意:这里的/website是你的项目根URL前缀,如果根URL没有前缀,直接写/luokat即可。

方法2:使用Django的URL反向解析(推荐)

这是Django官方推荐的做法,能避免硬编码路径,后续修改URL配置时无需手动更新页面链接:

  1. 你的urls.py已经给luokat路径设置了name="luokat",满足反向解析的前提
  2. 在导航栏模板中替换为{% url %}标签:
<li class="nav-item">
  <a class="nav-link" href="{% url 'luokat' %}">Luokat</a>
</li>

如果该URL属于某个app命名空间,需要加上命名空间(假设app名为tietokanta):

<a class="nav-link" href="{% url 'tietokanta:luokat' %}">Luokat</a>

额外规范建议

为了符合Django的URL设计规范,建议给所有URL路径末尾加上斜杠,同时确保项目settings.py中APPEND_SLASH = True(默认开启),Django会自动处理不带斜杠的URL跳转,减少路径混淆:
修改urls.py:

urlpatterns = [
    path('näytä_luokka/<luokka_id>/', views.näytä_luokka, name="näytä-luokka"),
    path('luokat/', views.kaikki_luokat, name="luokat"),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:46:24