Django - 表格 - (?P <pk> \ d +)/ $表示什么?

时间:2017-11-12 06:16:27

标签: python django forms

我是django的新手。我正在借助在线教程在django中创建表单。我没有理解urls.py文件中的一行。有人可以解释它究竟意味着什么吗?

from django.conf.urls import url
from . import views
from . views import BlogListView, BlogDetailView, BlogCreateView

urlpatterns = [
    url(r'^$', views.BlogListView.as_view(), name='post_list'),
    url(r'^post/(?P<pk>\d+)/$', BlogDetailView.as_view(), name='post-detail'),
    url(r'^post/new/$', BlogCreateView.as_view(), name='post_new'),
    url(r'^post/(?P<pk>\d+)/edit/$', BlogUpdateView.as_view(), name='post_edit'),
]

我不明白以下几行:

url(r'^post/(?P<pk>\d+)/$'

(?P<pk>\d+)/$表示什么? 请帮忙

2 个答案:

答案 0 :(得分:2)

这是一个正则表达式,与实际网址

匹配

这里r''指定字符串是原始字符串。 '^'表示开始,$表示结束。

现在'pk'(在&lt;&gt;内)代表主键。主键可以是任何例如。它可以是字符串,数字等。主键用于区分表的不同列。

这里写的是

<pk>\d+

\ d匹配[0-9]和其他数字字符。

'+'表示数字中必须至少有1位或更多位数

所以,

  

... / posts / 1有效

     

... / posts / 1234有效

     

... / posts /无效,因为号码中必须至少有一位数

现在,此号码作为参数发送到BlogListView,您可以使用此主键运行所需的操作

答案 1 :(得分:0)

您的BlogDetailView必须具有“id”作为参数才能捕获要更新的博客帖子

这将捕获所选博客帖子的“id”并将其传递给BlogDetailView

url(r'^post/(?P<pk>\d+)/$'

例如: 对于网址:http://localhost:8000/post/2 将捕获2并将作为'id'传递到BlogDetailView