2

我正在阅读 django 教程,虽然现在几乎所有内容看起来都很清楚,但我在匹配 url 时无法理解正则表达式:

r'^(?P<poll_id>\d+)/$

(?P<poll_id>\d+)什么?

我知道在剥离"34/"from之后"polls/34/"polls.url正在调用 The 并且urlpatterns正在寻找关键字,但是如何poll_id获得这个值34

我只知道一点正则表达式,所以这就是我可能难以阅读的原因。另外,这里是我用于这个问题的参考:Tutorial Part3

4

2 回答 2

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,然后使用 that 继续查看此视图poll_id​​。

于 2013-02-01T02:12:21.327 回答
2

为了支持 Dan Hoerst 的回答:是的,django 使用正则表达式来提取视图的 poll_id。这个的底线是:

import re 
r = re.compile(r'^poll/(?P<poll_id>\d+)/$')
r.match('poll/132/').groups() # ('132',)
于 2013-02-01T02:35:00.657 回答