ImportError: No module named 'django.core.urlresolvers'

ImportError: No module named 'django.core.urlresolvers'

我正在处理 Django 项目,我需要为输入创建一个表单。我尝试从 django.core.urlresolvers 导入 reverse。我收到一个错误:

line 2, in from django.core.urlresolvers import reverse ImportError: No module named 'django.core.urlresolvers'

我正在使用 Python 3.5.2、Django 2.0 和 MySQL。

Django 2.0 删除了 django.core.urlresolvers 模块,该模块在 1.10 版本中被移至 django.urls。您应该将任何导入更改为使用 django.urls,如下所示:

from django.urls import reverse

请注意,Django 2.0 删除了以前 django.core.urlresolvers 中的一些功能,因此您可能需要进行更多更改才能让您的代码生效。有关这些额外更改的详细信息,请参阅 features deprecated in 1.9

如果要反向导入,请从django.urls

导入
from django.urls import reverse

您需要替换所有出现的:

from django.core.urlresolvers import reverse

至:

from django.urls import reverse

注意:同样适用于reverse_lazy

in Pycharm Cmd+Shift+R 开始替换in路径。

对于那些可能试图创建 Travis 构建的人来说,从 requirements.txt 文件安装 Django 的默认路径指向一个 django_extensions 模块尚未更新的仓库。目前唯一的解决方法是使用 pip 从 master 分支安装。这就是制作补丁的地方。但是现在,我们必须等待。

你可以同时试试这个,它可能会有帮助

- pip install git+https://github.com/chibisov/drf-extensions.git@master

- pip install git+https://github.com/django-extensions/django-extensions.git@master

如果您在 TravisCI 上的构建由于这个特殊原因而失败,您可以通过更新 requirements.txt

中的 Django 扩展来解决问题
pip install --upgrade django-extensions

这将更新扩展以使用 Django 2+ 模块。

urlresolver 已在更高版本的 Django 中删除 - 请升级您的 django 安装。我使用以下命令修复了它。

pip install django==2.0 --upgrade

对于大于 2.0 的 django 版本使用:

from django.urls import reverse

在您的 models.py 文件中。

要解决此问题,您可以将 Django 降级到任何低于 2.0. pip 的版本,安装 Django==1.11.29.

就我而言,问题是我安装了过时的 django-stronghold (0.2.9)。即使在我的代码中:

from django.urls import reverse

我仍然遇到错误。在我将版本升级到 django-stronghold==0.4.0 之后,问题就消失了。

使用 from django.urls import reverse 而不是 from django.core.urlresolvers import reverse

正在将 Django 1.9 (Python 2.7) 升级到 Django 3.2 (Python 3.9)

这可以在一行中解决 bash 替换:

grep -ril "from django.core.urlresolvers" your_source_code_folder | xargs sed -i 's@from django.core.urlresolvers@from django.urls@g'