我是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+)/$
表示什么?
请帮忙
答案 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