Import Error: 升级到 Django 4.0后,无法从‘ Django.con.urls’导入名称‘ url’

升级到 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'),
]
112234 次浏览

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

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

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'),
]

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

from django.urls import include, path


from myapp.views import home


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

如果您有一个大型项目需要更新许多 URL 模式,您可能会发现 姜戈升级版库对于更新您的 urls.py文件非常有用。

看在 django 版本 4.0它不会工作。 因此,在虚拟环境中安装 Django 时,请选择此版本

Pip install django = = 3.2.10

这肯定会解决你的错误,在 main urls.py中这样做:

来自 django con.urls import url

来自 django.urls 导入路径,包括

I think a quick fix to this problem is to do followings;

你可以很容易地替换

from django.conf.urls import url

回到这里:

from django.urls import re_path as url

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

修正了这一点,改为..。

from django.urls import re_path as url

当然,在 urlpatterns中用 url代替 re_path

只是在你的进口中做这个导入

from django.urls import re_path as url

而不是低于导入,这一定会工作

from django.urls import url

不要在代码中做任何更改