Django主urls.py引入应用urls.py路由时url导入错误解决
报错原因
该报错是因为你使用的Django版本≥4.0,从Django 4.0开始,官方正式移除了django.conf.urls模块下的url方法。旧版本中url是正则路由函数re_path的别名,新版本中无法再通过原路径导入使用。
另外你贴出的Post/urls.py代码中,urlpatterns列表前存在多余缩进,这也会触发Python语法错误,修改时需要一并修正。
修复方案
主路由文件blog/urls.py的代码不需要调整,仅修改Post/urls.py即可,有两种可选修改方式:
方式一:替换为re_path(完全兼容原有正则路由规则,无需修改匹配表达式)
将原有的url导入替换为从django.urls导入re_path,同时删除urlpatterns前的多余缩进,修改后代码如下:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^$',views.all_posts, name='all_posts'), re_path(r'^(?P<id>\d+)$',views.post, name='post'), ]
方式二:使用新版path语法(官方推荐,可读性更强)
Django 2.0之后推出的path方法支持内置路径转换器,不需要写正则即可完成常见参数匹配,更易维护,修改后代码如下:
from django.urls import path from . import views urlpatterns = [ path('',views.all_posts, name='all_posts'), path('<int:id>/',views.post, name='post'), ]
注意:
path('<int:id>/', ...)写法中,<int:id>会自动匹配数字类型的id参数,路由末尾添加斜杠是Django官方推荐的写法,可避免框架默认的APPEND_SLASH配置触发不必要的重定向。
修改完成后重启Django服务即可正常加载路由。
内容的提问来源于stack exchange,提问作者ayobqorban
相关产品推荐
相关产品推荐

