Django路由改为contact后访问出现404页面未找到问题求助
Django Contact页面404问题解决
问题情况
我是Django新手,在创建contact页面时遇到以下问题:
初始状态下,应用文件夹的urls.py代码如下:
from .views import * urlpatterns = [ path("contacts", contact_view), ]
views.py代码(注:原代码缺少def关键字,属于语法错误,已修正):
from django.http import HttpResponse def contact_view(request): return HttpResponse('<h1>Contact Page</h1>')
访问http://127.0.0.1:8000/contacts时一切正常。但将路径改为contact后:
urlpatterns = [ path("contact", contact_view), ]
尝试访问http://127.0.0.1:8000/contact时出现404,错误信息显示实际请求的URL是http://127.0.0.1:8000/contact/(带末尾斜杠),而URL配置中的路径是contact(无斜杠),导致匹配失败。
已尝试重启服务器和编辑器,问题未解决。
环境信息:Windows 11、VSCode、django 4.2.4
解决方法
方法1:给URL路径添加末尾斜杠
修改应用的urls.py,在路径后加上斜杠:
urlpatterns = [ path("contact/", contact_view), ]
Django默认开启APPEND_SLASH设置(settings.py中默认APPEND_SLASH = True),当用户访问不带斜杠的/contact时,会自动重定向到带斜杠的/contact/,从而匹配到视图。
方法2:使用正则路径匹配两种情况
如果需要同时支持带斜杠和不带斜杠的访问,可以用re_path定义正则规则:
from django.urls import re_path urlpatterns = [ re_path(r'^contact/?$', contact_view), ]
正则表达式中的/?表示末尾的斜杠是可选的,这样/contact和/contact/都会被正确匹配。
额外检查
确保项目根目录的urls.py已正确包含应用的URL配置,示例如下:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('你的应用名称.urls')), # 替换为实际应用名 ]
内容的提问来源于stack exchange,提问作者Afshin Davoudy
相关产品推荐
相关产品推荐

