为什么我的 Django3 项目是用正则表达式代码创建的?

Dar*_*ong 5 python django django-urls

我对 Django 很陌生。

我正在使用 Django 3,当我创建一个新的 Django 项目时,urls.py 文件包含以下代码:

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
   url(r'^admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)

我认为这个正则表达式代码适用于旧版本的 Django。较新的 Django 3 应该使用path.

我做错了什么吗?

Wil*_*sem 2

简短的回答:现代django-admin用途path

\n\n

本身不需要使用路径,因为并非所有正则表达式都映射到内置路径转换器。但是您应该使用re_path[Django-doc],因为url[Django-doc]是,如文档中指定的:

\n\n
\n

该函数是 的别名django.urls.re_path()。它\xe2\x80\x99s可能会在未来版本中被弃用。

\n
\n\n

 

\n\n
\n

我认为这个正则表达式代码适用于旧版本的 Django。较新的 Django 3 应该使用路径。

\n
\n\n

开始,可以使用path, 从而使用路径转换器。但是,如果该模式不是内置的部分转换器,那么您自己引入它可能会相当困难,并且如果您只需要它一次,也许不值得付出努力。因此您可能仍然想使用re_path.

\n\n

请注意,创建项目的程序是django-admin. 如果我用 运行它django-tools-3.0.5,我会得到预期的结果path

\n\n
$ django-admin --version\n3.0.5\n$ django-admin startproject django_test\n$ cat django_test/django_test/urls.py\n"""django_test URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/3.0/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  path(\'\', views.home, name=\'home\')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  path(\'\', Home.as_view(), name=\'home\')\nIncluding another URLconf\n    1. Import the include() function: from django.urls import include, path\n    2. Add a URL to urlpatterns:  path(\'blog/\', include(\'blog.urls\'))\n"""\nfrom django.contrib import admin\nfrom django.urls import path\n\nurlpatterns = [\n    path(\'admin/\', admin.site.urls),\n]
Run Code Online (Sandbox Code Playgroud)\n\n

所以也许您忘记更新django-admin工具。

\n