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

Django配置urls与views后点击导航跳转404但直接输入URL可访问如何解决

问题原因

你的故障是导航栏链接使用了相对当前路径的短写格式,与Django的路由匹配规则不匹配导致的,同时你的代码还存在几个明显的语法/配置疏漏。

修复步骤

1. 修正urls.py的路由规则

Django默认开启APPEND_SLASH配置,会自动将无尾斜杠的请求重定向到带尾斜杠的地址,为了避免匹配异常,给所有路由规则加上尾斜杠:

from django.urls import path, include
from django.conf.urls.static import static
from . import views
urlpatterns = [
    path('', views.homepage, name='homepage'),
    path('publications/', views.publications, name='publications'),
    path('alumni/', views.alumni, name='alumni'),
    path('contact/', views.contact, name='contact'),
    path('joinus/', views.joinus, name='joinus'),
    path('phdstudents/', views.phdstudents, name='phdstudents'),
    path('pi/', views.pi, name='pi'),
    path('project1/', views.project1, name='project1'),
    path('research/', views.research, name='research'),
    path('researchers/',views.researchers, name='researchers'),
    path('shiladit/', views.shiladit, name='shiladit'),
    path('students/', views.students, name='students'),
    path('team/', views.students, name='team'),
]

2. 修正模板内导航栏的链接写法

你现在用的Bootstrap模板里的导航链接应该是类似<a href="publications">的相对路径写法,这种写法在非首页的页面点击时,会把当前页面路径和链接地址拼接,比如你在/pi/页面点击就会跳转到/pi/publications/,自然触发404。两种修正方案选一个即可:

  • 简单方案:给所有导航链接的href属性开头加斜杠,改成绝对路径格式,比如<a href="/publications/">
  • 规范方案(更推荐,后续改路由前缀也不会失效):用Django内置的url模板标签匹配你定义的路由name,比如<a href="{% url 'publications' %}">,其他路由同理替换成对应的name值即可。

3. 修复代码疏漏

  • 你的views.py里重复定义了publications函数,删掉多余的那个即可
  • urls.py里定义了shiladit、students两个路由对应的视图函数,你在views.py里没有实现,需要补上对应的函数,否则访问这两个地址会报错
  • 检查views里的模板路径是否正确,比如joinus.html如果是放在lab文件夹下,需要写成lab/joinus.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:45:05