ImportError: 无法从 django.conf.urls 导入名称 ‘url’
ImportError: cannot import name ‘url’ from django.conf.urls
“ImportError: cannot import name ‘url’ from ‘django.conf.urls’” 的发生是因为django.conf.urls.url()
在 Django 版本 4 中已被弃用和删除。
要解决该错误,请改为导入并使用该re_path()
方法。
ImportError: cannot import name 'url' from 'django.conf.urls' (/home/borislav/Desktop/bobbyhadz_python/venv/lib/python3.11/site-packages/django/conf/urls/__init__.py)
如
发行说明
所述,django.conf.urls.url()
从第 3 版开始已弃用,并已在 Django 的第 4 版中删除。
更改您的导入语句以使用re_path
您应该尝试的第一件事是更改导入语句以改为使用
re_path
from 方法django.urls
。
from django.urls import include, re_path urlpatterns = [ re_path(r'^$', views.home, name='home'), re_path(r'^index/$', views.index, name='index'), re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'), re_path(r'^blog/', include('blog.urls')), # ... ]
re_path()
您可以在
文档的这一部分阅读有关该函数如何工作的更多信息。
或者,使用 path() 函数
或者,您可以使用
路径功能。
from django.urls import include, path urlpatterns = [ path('', views.home, name='home'), path('index/', views.index, name='main-view'), path('bio/<username>/', views.bio, name='bio'), path('articles/<slug:title>/', views.article, name='article-detail'), path('articles/<slug:title>/<int:section>/', views.section, name='article-section'), path('blog/', include('blog.urls')), # ... ]
在你的代码中re_path
使用别名url
如果您正在寻找一种快速而笨拙的解决方案,您可以尝试将别名设置re_path
为url
.
# ✅ new import (alias re_path as url) from django.urls import include, re_path as url
如果您决定使用此方法,则必须将所有出现的以下导入语句替换为上面的带别名的导入语句。
# ⛔️ old import (Django older than v4) from django.conf.urls import url
您可以使用命令检查您的项目使用的 Django 版本
pip show django
。
pip show django pip3 show django python -m pip show django python3 -m pip show django
# 将 Django 降级到旧版本
如果您的环境中有其他包使用已弃用的
django.conf.urls.url()
功能,您可以尝试将 Django 降级到 version
3.2.16
,或者 version 之前的最后一个版本4
。
您可以在包的 pypi 页面的这一部分检查 Django 的所有可用版本
。
pip install "Django<4.0" --force-reinstall pip3 install "Django<4.0" --force-reinstall # 👇️ if you don't have pip in PATH environment variable python -m pip install "Django<4.0" --force-reinstall python3 -m pip install "Django<4.0" --force-reinstall # 👇️ py alias (Windows) py -m pip install "Django<4.0" --force-reinstall # 👇️ for Jupyter Notebook !pip install "Django<4.0" --force-reinstall
–force -reinstall选项强制 pip 重新安装包。
您可以使用命令检查您的项目使用的 Django 版本
pip show django
。
pip show django pip3 show django python -m pip show django python3 -m pip show django
如果您使用 Django 版本 3,您可以url
从django.conf.urls
.
from django.conf.urls import url
如果所有建议都没有帮助,并且错误不是通过导入已弃用的django.conf.urls.url()
函数在您的代码中引起的,请尝试升级您环境中的所有包。
# 升级你环境中的所有包
升级所有过时包的最直接方法是使用 Python 脚本。
import pkg_resources from subprocess import call packages = [dist.project_name for dist in pkg_resources.working_set] call("pip install --upgrade " + ' '.join(packages), shell=True)
main.py
并运行该文件python main.py
以升级所有过时的包。以下是可用于升级所有过时软件包的替代命令。
# 👇️ macOS or Linux pip install -U `pip list --outdated | awk 'NR>2 {print $1}'` # 👇️ Windows for /F "delims= " %i in ('pip list --outdated') do pip install -U %i
如果您使用
requirements.txt文件,您可以使用以下命令更新它。
pip freeze > requirements.txt
# 额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: