38

升级到 Django 4.0 后,运行时出现以下错误python manage.py runserver

  ...
  File "/path/to/myproject/myproject/urls.py", line 16, in <module>
    from django.conf.urls import url
ImportError: cannot import name 'url' from 'django.conf.urls' (/path/to/my/venv/lib/python3.9/site-packages/django/conf/urls/__init__.py)

我的 urls.py 如下:

from django.conf.urls

from myapp.views import home

urlpatterns = [
    url(r'^$', home, name="home"),
    url(r'^myapp/', include('myapp.urls'),
]
4

3 回答 3

60

django.conf.urls.url()在 Django 3.0 中已弃用,并在 Django 4.0+ 中删除。

最简单的解决方法是替换url()re_path(). re_path使用正则表达式url,因此您只需更新导入并替换urlre_path.

from django.urls import include, re_path

from myapp.views import home

urlpatterns = [
    re_path(r'^$', home, name='home'),
    re_path(r'^myapp/', include('myapp.urls'),
]

或者,您可以切换到使用path. path()不使用正则表达式,因此如果您切换到路径,则必须更新您的 URL 模式。

from django.urls import include, path

from myapp.views import home

urlpatterns = [
    path('', home, name='home'),
    path('myapp/', include('myapp.urls'),
]

如果您有一个需要更新许多 URL 模式的大型项目,您可能会发现django-upgrade库对更新您的urls.py文件很有用。

于 2021-12-11T22:44:15.560 回答
7

我认为快速解决此问题的方法是执行以下操作;

您可以轻松更换

from django.conf.urls import url

对此:

from django.urls import re_path as url

并保持其余代码与以前相同。(感谢@Alasdair)

于 2022-02-10T21:14:34.883 回答
1

在 django 4.0版中查看它不起作用。所以在你的虚拟环境中安装 Django 时选择这个版本

pip install django==3.2.10

这肯定会解决您的错误,并在主 urls.py中执行以下操作:

从 django.conf.urls 导入 url

from django.urls 导入路径,包括

于 2021-12-29T17:31:06.117 回答