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

Django重定向失败:点击链接生成嵌套路径报错如何解决

问题原因

你的路由配置本身没有问题,跳转异常是因为页面内的链接使用了无首斜杠的相对路径,浏览器会默认将该路径拼接在当前页面的父路径后,才会出现/maps/reports的错误地址。

解决方法

有两种常用的实现方案,优先推荐第一种Django原生规范方案:

方案1:使用Django URL命名+模板标签(推荐)

这是Django官方推荐的最佳实践,避免硬编码路径,后续修改路由也无需同步改动模板:

  1. 先给urls.py里的每个路由添加name参数做唯一标识:
from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('login/', views.login, name='login'),
    path('maps/', views.maps, name='maps'),
    path('profile/', views.profile, name='profile'),
    path('preferences/', views.preferences, name='preferences'),
    path('register/', views.register, name='register'),
    path('reports/', views.reports, name='reports'),
    path('weather/', views.weather, name='weather'),
    path('help/', views.help, name='help'),
]
  1. 将模板内所有跳转链接的href属性替换为Django的{% url %}模板标签,比如指向reports的链接写法如下:
<a href="{% url 'reports' %}">报告页面</a>

该标签会自动生成从根路径开始的正确绝对路径,无论当前处于哪个页面都不会出现路径嵌套问题。

方案2:给链接路径添加首斜杠

如果不想改动路由配置,可以直接修改模板内的链接写法,给所有路径开头添加斜杠/,代表从网站根路径开始解析:
将原来的

<a href="reports">报告页面</a>

修改为

<a href="/reports">报告页面</a>

即可直接跳转至localhost/reports,但该方案属于硬编码,后续如果调整路由路径需要同步修改所有对应模板的链接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:18:03