如何理解Django路由配置URLConf中的正则表达式

在Django中,如果要通过url将参数传递给视图,有两种路由配置方式。如下两种方式等效:

urlpatterns = [
    path('article/<int:id>/', views.article_detail, name = 'article_detail'),
    re_path(r'^article/(?P<id>\d+)/$', views.article_detail, name='article_detail'),
]

都可以匹配:http://.../article/3/。其中的(?P<id>\d+)作何理解?

这是一个命名组,将\d+匹配到的数字记录到名字为id的这个命名组中。

参考:Named Capturing Groups and Backreferences What does P mean in /(?P<topic_id>\d+)$