ImportError: cannot import name 'url' from 'django.conf.urls' after upgrading to Django 4.0
ImportError: cannot import name 'url' from 'django.conf.urls' after upgrading to Django 4.0
升级到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'),
]
django.conf.urls.url()
在 Django 3.0 中被弃用,在 Django 4.0+ 中被移除。
最简单的修复方法是将 url()
替换为 re_path()
。 re_path
使用像 url
这样的正则表达式,因此您只需更新导入并将 url
替换为 re_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
文件很有用。
在django version 4.0 看是不行的。
因此,在您的虚拟环境中安装 Django select 这个版本
pip install django==3.2.10
这肯定会解决您的错误,在 main urls.py 中执行此操作:
从 django.conf.urls 导入 url
从django.urls导入路径,包括
我认为快速解决此问题的方法是执行以下操作;
您可以轻松替换
from django.conf.urls import url
对此:
from django.urls import re_path as url
并保持其余代码与以前相同。
(感谢@Alasdair)
升级到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'),
]
django.conf.urls.url()
在 Django 3.0 中被弃用,在 Django 4.0+ 中被移除。
最简单的修复方法是将 url()
替换为 re_path()
。 re_path
使用像 url
这样的正则表达式,因此您只需更新导入并将 url
替换为 re_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
文件很有用。
在django version 4.0 看是不行的。 因此,在您的虚拟环境中安装 Django select 这个版本
pip install django==3.2.10
这肯定会解决您的错误,在 main urls.py 中执行此操作:
从 django.conf.urls 导入 url
从django.urls导入路径,包括
我认为快速解决此问题的方法是执行以下操作;
您可以轻松替换
from django.conf.urls import url
对此:
from django.urls import re_path as url
并保持其余代码与以前相同。 (感谢@Alasdair)