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

Django 2.0.4中path路由无法工作,路由匹配失败如何解决?

解决Django 2.x空路径路由匹配失败的问题

嘿,我来帮你搞定这个头疼的路由问题!首先咱们先拆解下报错信息:系统说只尝试了admin/和^media/(?P<path>.*)$这两个模式,空路径没匹配到,这说明你的根URL配置(src/urls.py)里压根没给空路径(也就是网站首页)设置对应的路由规则。

Django 2.x确实移除了旧的url()方法(不过re_path()是它的别名,功能完全一致),但官方主推的path()其实更简洁,完全能满足大部分常规路由需求,不用非得退回去用正则。下面给你两种常见的解决方案,你根据自己的需求选:

方案1:直接给空路径绑定视图函数

如果你的首页逻辑很简单,直接在根urls.py里绑定对应的视图就行:

from django.contrib import admin
from django.urls import path
from django.conf.urls.static import serve
from django.conf import settings
# 导入你的首页视图,比如从home应用导入home_view
from home.views import home_view

urlpatterns = [
    path('admin/', admin.site.urls),
    # 关键就是这一行:空字符串对应根路径,绑定你的首页视图
    path('', home_view, name='home'),
    path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),
]

方案2:将空路径转发给子应用的URL配置

如果你的首页逻辑属于某个子应用(比如blog),那就用include()把根路径的请求转发给子应用的urls.py处理:
首先修改根src/urls.py:

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import serve
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    # 把空路径的请求交给blog应用的urls处理
    path('', include('blog.urls')),
    path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),
]

然后在blog/urls.py里添加根路径的匹配规则:

from django.urls import path
from . import views

urlpatterns = [
    # 这里的空字符串就对应网站的根路径了
    path('', views.blog_index, name='blog_index'),
]

几个要注意的小细节

  • 路由匹配是按顺序执行的,所以空路径的规则别被其他更具体的规则挡住(不过空路径是最宽泛的,一般放在前后都没问题)
  • 确保你导入的视图函数没有语法错误,不然即使路由配对了也会报错
  • 如果需要复杂的正则匹配再用re_path(),常规场景下path()的路径转换器(比如<str:name>、<int:pk>)完全够用,比正则好写多了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:32:15