- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这是来自 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/
Django URL 模式不匹配。谁能告诉我为什么? 这是 re_path: re_path( r'^resultcount/(?P.*)_()/$', views.resultcou
在 Django2.0 中引入 path() 和 re_path() . 但是我不清楚两者之间的区别:是否能够使用正则表达式? 这是否意味着我不能同时使用 和 (?P\d+)相同模式中的语法? 最佳答
这是来自 Django Docs 的示例: from django.urls import include, path urlpatterns = [ path('index/', views
我是 python 和 Django 的新手,所以如果这个问题看起来太简单了,请原谅。 我一直在尝试在 CreateView 中使用它,但它不起作用: re_path(r'^/$', indexVie
我正在努力弄清楚如何在 Django 中使用带有 re_path 的正则表达式来匹配一组模式中的任何一个。 我想要匹配 /bucket/、/buckets/、/pail/ 或 /pails到单个 Vi
我的 urlpatterns 有什么问题吗? urlpatterns = [ re_path(r'^dj-admin/', admin.site.urls), re_path(r'^a
我一直在尝试使用 urls.py 文件中的 re_path 方法获取泛型 RetrieveAPIView 类。在尝试了几种组合之后,我只能让路径方法起作用。我想要一个类似于 /file?id={som
我的网址模式如下所示: urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls'
这个问题在这里已经有了答案: NoReverseMatch with keyword argument uidb64 with Django 2.0 (4 个答案) 关闭 5 年前。 在项目的 ur
我是一名优秀的程序员,十分优秀!