Django4中配置BaseURL遇url导入报错,该如何解决?
问题根源
Django 4.x 已经彻底移除了django.conf.urls.url这个工具函数——它早在Django 3.1就被标记为弃用,官方推荐用re_path()(适配正则表达式路径)或path()(适配简单固定路径)来替代。你找到的那篇Stack Overflow文章是针对旧版Django(比如2.x之前)的方案,自然不适用于Django4。
修复代码
如果你需要保留正则匹配逻辑(和原代码逻辑完全一致)
把url替换成re_path,同时修改导入语句:
from django.urls import include, re_path # 替换原导入 from . import views from django.contrib import admin # 别忘了导入admin模块 urlpatterns = [ re_path(r'^someuri/', include([ re_path(r'^admin/', admin.site.urls), re_path(r'^other/$', views.other) ])), ]
如果你不需要正则表达式(更简洁的写法)
用path()替代,不需要加正则的r'^'和$:
from django.urls import include, path from . import views from django.contrib import admin urlpatterns = [ path('someuri/', include([ path('admin/', admin.site.urls), path('other/', views.other) ])), ]
小提醒
- 必须导入
django.contrib.admin,不然admin.site.urls会报错; - 这种嵌套
include的写法确实能实现你要的“base URL”效果,所有子路由都会自动带上someuri/前缀。
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

