Django 1.8报错‘No module named 'django.urls'’,附代码求解决方案
搞定Django 1.8里的“No module named 'django.urls'”错误
嘿,我来帮你排查这个问题!这个错误其实是版本不兼容导致的,咱们一步步来解决:
问题到底出在哪?
Django 1.8里根本没有django.urls这个模块——这个模块是Django 1.10之后才新增的。你碰到这个错误,大概率是因为用的Django REST Framework(DRF)版本太高了,高版本的DRF会尝试调用django.urls里的接口,这在Django 1.8里肯定找不到呀!
具体怎么解决?
1. 安装和Django 1.8兼容的DRF版本
Django 1.8对应的DRF兼容版本是3.3.x系列(最高到3.3.3)。先卸载当前的DRF,再装兼容版:
pip uninstall djangorestframework pip install djangorestframework==3.3.3
2. 检查你的URL配置
从你给的urls.py片段来看,目前的导入是对的(用的是django.conf.urls而不是django.urls),但要确保整个文件里没用到django.urls里的东西,比如path()函数——Django 1.8里只有url()能用。完整的urls.py可以参考这个结构:
from django.conf.urls import url, include from django.contrib import admin from rest_framework.routers import DefaultRouter from nba import views router = DefaultRouter() router.register(r'news', views.NewsViewSet) urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^api/', include(router.urls)), ]
3. 确认依赖版本匹配
可以用下面的命令看看当前的Django和DRF版本,确保是兼容的:
pip freeze | grep -E "Django|djangorestframework"
正常输出应该是这样的:
Django==1.8.20 djangorestframework==3.3.3
额外小提示
如果之后你想用到django.urls里的功能(比如更简洁的path()路由),那得把Django升级到1.10及以上版本,但升级前一定要确认项目里其他依赖也能兼容新版本哦!
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

