以下是Django Docs中的一个示例:
from django.urls import include, path
urlpatterns = [
path('index/', views.index, name='main-view'),
path('bio/<username>/', views.bio, name='bio'),
...
]
from django.urls import include, re_path
urlpatterns = [
re_path(r'^index/$', views.index, name='index'),
re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
...
]
根据我的理解,path
语法更具可读性,并且提供了尖括号,可以从URL捕获信息并转换类型。
我需要正则表达式时仅使用re_path
,而在所有其他情况下都使用path
吗?
答案 0 :(得分:1)
re_path
是'old' way of handling urls的实现,以前是url
由django.conf.urls
完成的{{2}版本。
有关此内容,请参见Django 2.0 relaese notes中的段落。
话虽这么说,我建议您尽可能使用path
!
我看到的原因:
path
的目的是使事情变得更简单,这显然是django开发人员想要走的方向。因此,在使用path
时,您将遵循这个方向,从而将必须使代码库适应新更改的风险降到最低。
尽管path
不仅仅是使事情变得更简单的结果,但实际上确实确实使事情变得更简单,更易读,这就是为什么path
应该这样做的一个很好的理由如果两个选项都是一个选项,则优先。
现在re_path
存在是有原因的,因此在某些情况下,使用re_path
仍然是更好的选择。显然,一种情况是需要非常定制的转换器并达到custom converters for 'path'可行的极限。使用re_path
的另一种情况可能是在将具有相当复杂的URL转换器的系统从Django 1.x升级到2.x时:只需将url
替换为re_path
命令就可以了。更加节省时间,因此是一种理想的方法。
答案 1 :(得分:0)
你明白了。较新的path
语法使URL模式更加简洁。您也可以write your own path converters,以便更多路径可以使用path
而不是re_path
。