Django 1.8 和 Rest Framework 3.7 的“导入错误:没有名为 urls 的模块”
Posted
技术标签:
【中文标题】Django 1.8 和 Rest Framework 3.7 的“导入错误:没有名为 urls 的模块”【英文标题】:"Import Error: No module named urls" with Django 1.8 and Rest Framework 3.7 【发布时间】:2018-09-04 07:08:35 【问题描述】:我正在使用 django==1.8,rest_framework=3.7.7,python==2.7.12
urls.py
urlpatterns += [
url(r'^api/core/', include('core.urls')),
]
core/urls.py
urlpatterns=[
url(r'^/users/', core_view.userlist),
]
views.py
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
userlist = UserList.as_view()
当我导航到:http://localhost:8000/api/core/users 时,我收到以下错误:
ImportError at /api/core/users
No module named urls
Request Method: GET
Request URL: http://localhost:8000/api/core/users
Django Version: 1.8
Exception Type: ImportError
Exception Value:
No module named urls
Exception Location: /usr/local/lib/python2.7/dist-packages/rest_framework/compat.py in <module>, line 26
Python Executable: /usr/bin/python
Python Version: 2.7.12
配置有什么问题?
【问题讨论】:
正如@Alasdair 提到的,您使用的是什么版本的 django rest 框架? djangorestframework==3.7.7 如果您在@Alaisdair 提供的链接中查看 3.7 的发行说明 -“更新测试矩阵以添加 Django 2.0 并删除 Django 1.8 和 1.9 BC 更改:这将从 Django REST 中删除 Django 1.8 和 Django 1.9框架支持的版本。” @AKS 请看我 20 分钟前的回答:“你应该安装更早版本的 REST 框架,或者升级 Django” 顺便说一句,r'^/users/'
中不应该有前导斜杠
【参考方案1】:
Django Rest Framework 不再支持 Django 1.8 in version 3.7。
您应该安装较早版本的 rest 框架,或升级 Django(请注意,Django 1.8 将于 2018 年 4 月结束生命周期)
【讨论】:
@GalSilberman 因为它在Exception location
中被提及
@Alasdair 感谢我安装了 2.4.8 版的 DRF,它工作正常。这是兼容性问题
很高兴这有效。您选择了一个非常旧的版本来安装。由于在 3.7 中不再支持,我认为3.6.4 将是安装的明显选择。【参考方案2】:
只需确保您在 INSTALLED_APPS
设置中包含 core
应用程序,并且您的核心目录文件夹中有 init.py。
查看here了解更多信息。
【讨论】:
是的,我已经在 INSTALLED_APPS 中添加了它,它包含 init.py以上是关于Django 1.8 和 Rest Framework 3.7 的“导入错误:没有名为 urls 的模块”的主要内容,如果未能解决你的问题,请参考以下文章
DRF:如何将 django-rest-framework-jwt 集成到 Djoser
从 Django django-rest-framework 视图有条件地返回 JSON 或 HTML 响应