我正在浏览django教程,虽然现在几乎所有东西看起来都非常清楚,但在匹配网址时我无法理解正则表达式:
r'^(?P<poll_id>\d+)/$
(?P<poll_id>\d+)
做了什么?
我理解在从"34/"
剥离"polls/34/"
之后,正在调用polls.url
并且正在寻找关键字urlpatterns
,但{我是怎么做的} {1}}获取此值poll_id
?
我只知道一点正则表达式,所以这就是为什么我可能难以阅读。 此外,以下是我用于此问题的参考:Tutorial Part3
答案 0 :(得分:4)
这是一个将poll_id
(一个数字)作为变量的正则表达式。
相应的观点是:
def detail(request, poll_id):
return HttpResponse("You're looking at poll %s." % poll_id)
现在,当您转到example.com/polls/34/
时,它知道您正在寻找poll
号码34
,并将其作为poll_id
带入视图。
因此,在您看来,poll_id = 34
。这允许您显示或操纵此特定轮询。
本章中正则表达式的基本要点是允许您查看大量特定民意调查,而无需为每个民意调查创建明确的URL。
要澄清一下,这个正则表达式是说取任意数字\d+
,将其保存为poll_id
,然后使用poll_id
继续此视图。
答案 1 :(得分:2)
支持Dan Hoerst的回答:是的,django使用正则表达式来提取视图的poll_id。其下面是:
import re
r = re.compile(r'^poll/(?P<poll_id>\d+)/$')
r.match('poll/132/').groups() # ('132',)