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 响应

扩展 django rest 框架以允许在嵌套序列化程序中继承上下文

Django 1.7 和 1.8 之间迁移行为的变化

django 1.8 测试模型和迁移

Django 1.8 - migrate 和 makemigrations 有啥区别?