Django引入应用URL文件时出现循环导入path报错问题
报错原因
- 核心触发点是应用路由文件
base/links.py的导入语句写错:你写了from base.links import path,等于从当前正在加载的links.py文件自身导入path方法。主URL配置加载base.links模块时,执行到这行导入语句会反过来尝试从还没加载完成的base.links中获取path,直接触发循环导入报错。 - 额外存在一个路由配置小问题:根路径匹配的
path第一个参数写了带空格的字符串' ',就算修复导入问题,这个路由也无法正常匹配无路径的根地址。
修复步骤
- 修正
base/links.py的导入逻辑,path是Django路由模块提供的内置方法,需要从django.urls导入,同时去掉路径参数里的多余空格,修正后的完整代码如下:
from django.urls import path from . import views urlpatterns = [ path('', views.home), path('room/', views.room), ]
- (可选规范优化)Django生态默认把应用下的路由文件命名为
urls.py,你当前命名为links.py虽然可以正常运行,但不符合通用开发习惯,后续协作、排查问题容易产生混淆。可以将base/links.py重命名为base/urls.py,同步把项目主URL配置里的include参数改为'base.urls'即可。
内容的提问来源于stack exchange,提问作者Sam Abdallah
相关产品推荐
相关产品推荐

