什么时候应该在“ re_path”上使用“ path”?

时间:2019-03-21 17:13:10

标签: python django django-urls

以下是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吗?

2 个答案:

答案 0 :(得分:1)

re_path'old' way of handling urls的实现,以前是urldjango.conf.urls完成的{{2}版本。

有关此内容,请参见Django 2.0 relaese notes中的段落。

话虽这么说,我建议您尽可能使用path

我看到的原因:

    引入
  1. path的目的是使事情变得更简单,这显然是django开发人员想要走的方向。因此,在使用path时,您将遵循这个方向,从而将必须使代码库适应新更改的风险降到最低。

  2. 尽管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