Django新增app后启动报URLconf无patterns错误怎么解决
Django URLconf配置报错解决方案
django.core.exceptions.ImproperlyConfigured: The included URLconf 'djangoProject.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.
因为回退到新增projects app之前的版本可正常运行,问题100%出在本次新增projects app的相关改动中,按以下优先级排查:
1. 校验根路由文件djangoProject/urls.py
- 确认根路由中定义的路由列表变量名必须是
urlpatterns,拼写完全正确,Django只会识别该固定变量名作为全局路由入口 - 确认你新增的projects路由写法正确,示例参考:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('skills/', include('skills.urls')), path('projects/', include('projects.urls')), # 后续新增experience路由同理 ]
- 检查
include内的app路径拼写完全正确,不要多/少字母、大小写错误
2. 校验projects子应用路由文件projects/urls.py
- 确认projects目录下确实存在
urls.py文件,不能是其他文件名 - 确认该文件内也定义了
urlpatterns变量,哪怕暂时没有业务路由也需要先声明空列表urlpatterns = [] - 不要在该文件顶部导入未完成编写的views、serializers等模块,极易触发循环导入,示例最小可用配置:
from django.urls import path from . import views urlpatterns = [ # 后续补充你的业务API路由即可 ]
3. 排查循环导入问题
- 先注释掉根路由中新增的projects路由引入代码,如果项目可正常启动,说明问题完全出在projects应用内部
- 检查projects下的models、views、serializers文件是否存在跨模块互相导入的场景,比如views导入serializers的同时,serializers又导入views里的对象
- 临时规避方案:把循环导入的导入语句放到函数/方法内部,不要在模块顶层导入
4. 校验settings.py配置
- 确认
INSTALLED_APPS列表中已经添加了projects应用,拼写和应用目录名完全一致
内容的提问来源于stack exchange,提问作者Itzik Dan
相关产品推荐
相关产品推荐

