2

私はdjangoチュートリアルを行っていましたが、今ではほとんどすべてがかなり明確に見えますが、URLを一致させているときに正規表現を理解するのに問題があります:

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

何をし(?P<poll_id>\d+)ますか?

"34/"fromを取り除いた後"polls/34/"、Thepolls.urlが呼び出され、そこでキーワードが検索されていることを理解していますが、この値を取得urlpatternsするにはどうすればよいですか?poll_id34

正規表現を少ししか知らないので、読みにくいかもしれません。また、これが私がこの質問に使用しているリファレンスです:チュートリアルパート3

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/を探していることがわかり、それがとしてビューに表示されます。poll34poll_id

だからあなたの見解では、poll_id = 34。これにより、この特定のポーリングを表示または操作できます。

基本的に、この場合の正規表現のポイントは、それぞれに明示的なURLを作成しなくても、多数の特定の投票を表示できるようにすることです。

明確にするために、この正規表現は、任意の数を取り\d+、それをとして保存し、それを使用poll_idしてこのビューに進むと言ってい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 に答える