对于 django 2.0,在 urls.py 中使用 path() 还是 url() 更好?
Is it better to use path() or url() in urls.py for django 2.0?
在django 在线课程中,讲师让我们使用url()
函数调用视图并在urlpatterns 列表中使用正则表达式。我在 youtube 上看过其他例子。
例如
from django.contrib import admin
from django.urls import include
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
]
#and in polls/urls.py
urlpatterns = [
url(r'^$', views.index, name="index"),
]
但是,在阅读 Django 教程时,他们使用 path()
代替,例如:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name="index"),
]
此外,正则表达式似乎不适用于 path()
函数,因为使用 path(r'^$', views.index, name="index")
将找不到 mysite.com/polls/
视图。
使用 path()
而不匹配正则表达式是否是正确的前进方式? url()
更强大但更复杂,所以他们使用 path()
来开始我们的工作吗?还是不同的工作需要不同的工具?
path
只是几周前才发布的 Django 2.0 中的新内容。大多数教程不会针对新语法进行更新。
这当然应该是一种更简单的做事方式;我不会说 URL 更强大,你应该能够用任何一种格式表达模式。
来自 url
的 Django 文档
url(regex, view, kwargs=None, name=None)
This function
is an alias to django.urls.re_path()
. It’s likely to be deprecated in
a future release.
path
and re_path
之间的主要区别在于 path
使用没有正则表达式的路由
您可以使用 re_path
进行复杂的正则表达式调用,而仅使用 path
进行更简单的查找
正则表达式似乎不适用于具有以下参数的 path()
函数:path(r'^$', views.index, name="index")
.
应该是这样的:path('', views.index, name="index")
.
第一个参数必须为空才能输入正则表达式。
路径是 Django 2.0 的新特性。
在这里解释:
https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0
看起来更像 pythonic 方式,并允许在传递给视图的参数中不使用正则表达式...例如,您可以使用 int() 函数。
新的 django.urls.path()
函数允许更简单、更易读的 URL 路由语法。例如,以前 Django 版本中的这个例子:
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive)
可以写成:
path('articles/<int:year>/', views.year_archive)
以前版本的 django.conf.urls.url()
函数现在可用 django.urls.re_path()
。保留旧位置是为了向后兼容,不会立即弃用。旧的 django.conf.urls.include()
函数现在可以从 django.urls
导入,因此您可以使用:
from django.urls import include, path, re_path
在 URLconfs 中。进一步阅读 django doc
从 v2.0 开始,许多用户都在使用路径,但我们可以使用路径或 url。
例如在 django 2.1.1
通过 url 映射到函数可以按如下方式完成
from django.contrib import admin
from django.urls import path
from django.contrib.auth import login
from posts.views import post_home
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^posts/$', post_home, name='post_home'),
]
其中 posts 是一个应用程序,post_home 是 views.py
中的一个函数
在django 在线课程中,讲师让我们使用url()
函数调用视图并在urlpatterns 列表中使用正则表达式。我在 youtube 上看过其他例子。
例如
from django.contrib import admin
from django.urls import include
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
]
#and in polls/urls.py
urlpatterns = [
url(r'^$', views.index, name="index"),
]
但是,在阅读 Django 教程时,他们使用 path()
代替,例如:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name="index"),
]
此外,正则表达式似乎不适用于 path()
函数,因为使用 path(r'^$', views.index, name="index")
将找不到 mysite.com/polls/
视图。
使用 path()
而不匹配正则表达式是否是正确的前进方式? url()
更强大但更复杂,所以他们使用 path()
来开始我们的工作吗?还是不同的工作需要不同的工具?
path
只是几周前才发布的 Django 2.0 中的新内容。大多数教程不会针对新语法进行更新。
这当然应该是一种更简单的做事方式;我不会说 URL 更强大,你应该能够用任何一种格式表达模式。
来自 url
的 Django 文档
url(regex, view, kwargs=None, name=None)
This function is an alias todjango.urls.re_path()
. It’s likely to be deprecated in a future release.
path
and re_path
之间的主要区别在于 path
使用没有正则表达式的路由
您可以使用 re_path
进行复杂的正则表达式调用,而仅使用 path
进行更简单的查找
正则表达式似乎不适用于具有以下参数的 path()
函数:path(r'^$', views.index, name="index")
.
应该是这样的:path('', views.index, name="index")
.
第一个参数必须为空才能输入正则表达式。
路径是 Django 2.0 的新特性。 在这里解释: https://docs.djangoproject.com/en/2.0/releases/2.0/#whats-new-2-0
看起来更像 pythonic 方式,并允许在传递给视图的参数中不使用正则表达式...例如,您可以使用 int() 函数。
新的 django.urls.path()
函数允许更简单、更易读的 URL 路由语法。例如,以前 Django 版本中的这个例子:
url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive)
可以写成:
path('articles/<int:year>/', views.year_archive)
以前版本的 django.conf.urls.url()
函数现在可用 django.urls.re_path()
。保留旧位置是为了向后兼容,不会立即弃用。旧的 django.conf.urls.include()
函数现在可以从 django.urls
导入,因此您可以使用:
from django.urls import include, path, re_path
在 URLconfs 中。进一步阅读 django doc
从 v2.0 开始,许多用户都在使用路径,但我们可以使用路径或 url。 例如在 django 2.1.1 通过 url 映射到函数可以按如下方式完成
from django.contrib import admin
from django.urls import path
from django.contrib.auth import login
from posts.views import post_home
from django.conf.urls import url
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^posts/$', post_home, name='post_home'),
]
其中 posts 是一个应用程序,post_home 是 views.py
中的一个函数