升级到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条答案
按热度按时间ykejflvf1#
django.conf.urls.url()
在Django 3.0中被弃用,并在Django 4.0+中被删除。最简单的修复方法是将
url()
替换为re_path()
。re_path
使用像url
这样的正则表达式,因此您只需更新导入并将url
替换为re_path
。或者,您可以切换到使用
path
。path()
不使用正则表达式,因此如果切换到path,则必须更新URL模式。如果您有一个需要更新许多URL模式的大型项目,您可能会发现django-upgrade库对于更新
urls.py
文件很有用。k97glaaz2#
我认为解决这个问题的一个快速方法是:
您可以轻松更换
对此:
并保持代码的其余部分与以前相同。(感谢@Alasdair)
zlwx9yxi3#
在django版本4.0中,它将无法工作。所以当你在虚拟环境中安装Django的时候,选择这个版本
pip install django==3.2.10
这肯定会解决您的错误,并在main urls.py中执行以下操作:
from django.conf.urls import url
从django.urls导入路径,包含
oalqel3c4#
我观察到一些奇怪的事情,这个错误在我的虚拟环境中工作时消失了,但它在它之外是持久的。知道为什么吗但是导入URL作为re_path对我来说很好:)。正在使用Django 4.2.2和DRF 3.14.0。