这是来自 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
?
最佳答案
re_path
是 'old' way of handling urls 的一个实现,以前(版本 <2)由 url
完成来自 django.conf.urls
。
请参阅 Django 2.0 release notes 中的段落关于这个。
也就是说,我建议使用 path
只要有可能!
我看到的原因:
path
的引入是为了让事情变得更简单,这显然是 Django 开发者想要走的方向。因此,当您使用path
时,您将遵循这个方向,从而最大限度地降低必须使您的代码库适应新变化的风险。虽然
path
不仅仅是试图让事情变得更简单的结果,但它实际上确实让事情变得更简单和更具可读性,这本身就是为什么的一个很好的理由如果两个选项都是一个选项,则应首选路径
。
现在 re_path
存在是有原因的,所以在某些情况下使用 re_path
可能仍然是更好的选择。一种情况显然是需要非常定制的转换器并达到 custom converters for 'path' 可行的极限。 .另一种使用 re_path
的场景可能是将具有相当复杂的 url 转换器的系统从 Django 1.x 升级到 2.x:只需将 url
替换为 re_path
命令可以更省时,因此是一种理想的方法。
关于python - 我什么时候应该使用 'path' 而不是 're_path' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55285814/