导入错误:无法从 django.conf.urls 导入名称“url”

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 无法从 django conf urls 导入名称 url

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 版中删除。

django conf urls url 被删除

更改您的导入语句以使用re_path

您应该尝试的第一件事是更改导入语句以改为使用
re_pathfrom 方法django.urls

网址.py
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() 函数

或者,您可以使用
路径功能。

网址.py
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.

网址.py
# ✅ new import (alias re_path as url) from django.urls import include, re_path as url

如果您决定使用此方法,则必须将所有出现的以下导入语句替换为上面的带别名的导入语句。

网址.py
# ⛔️ 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 降级到旧版本

如果您的环境中有其他包使用已弃用的
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

降级django版本

–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 是否已安装

如果您使用 Django 版本 3,您可以urldjango.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)
您可以将脚本存储在 Python 文件中,例如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

# 额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: