2013-02-01 2 views
2

내가 장고 튜토리얼을 통해 진행되었다 데 지금은 거의 모든하지만 것 같다 꽤 명확 나는 URL을 일치하면서 정규 표현식을 이해하는 데 문제가 있어요 :파이썬 : 문제 이해 정규식

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

무엇 (?P<poll_id>\d+)을 수행을 그래?

나는 그것을 이해하고

"polls/34/"에서 "34/"을 제거 후, polls.url가 호출되고 있으며, 키워드 urlpatterns을 찾았다되고있다,하지만 어떻게이 값 34를 얻을 수 poll_id합니까?

나는 약간의 정규식 만 알고 있으므로 읽는 것이 어려울 수도 있습니다. 또한이 질문에 사용하는 참조는 다음과 같습니다. Tutorial Part3

답변

4

이것은 poll_id (숫자)을 변수로 사용하는 정규식입니다.

대응도이다 : 당신이 example.com/polls/34/에 갈 때

def detail(request, poll_id): 
    return HttpResponse("You're looking at poll %s." % poll_id) 

지금, 당신이 poll34를 찾고 있습니다 알고, 그것은 그 poll_id으로보기에 제공

.

보기에 poll_id = 34입니다. 이렇게하면이 특정 폴링을 표시하거나 조작 할 수 있습니다.

이 경우 정규식의 요점은 각 정규식에 대해 명시적인 URL을 만들지 않고 많은 수의 특정 투표를 볼 수있게하는 것입니다.

분명히하기 위해이 정규식은 \d+으로 설정하고 poll_id으로 저장 한 다음 poll_id으로이보기로 진행합니다.

+0

이렇게 정규 표현식'? ​​P ? –

+0

'? P '은 정규 표현식의 일부이며, 변수를 저장하는 부분입니다. 이 경우 실제 정규식 검색은'\ d +'입니다. 그래서 본질적으로 정규 표현식은 어떤 숫자 든'\ d +'를 사용하고, 그것을'variable_name'으로 저장하고,'variable_name'을이 뷰로 가져 오는 것을 말합니다. –

+0

찬란한, 내 대답을 : D 조 –

2

Dan Hoerst의 대답을 지원하려면 : yup, django는 정규식을 사용하여보기의 poll_id를 추출합니다. 이것의 밑은 다음과 같습니다 :

import re 
r = re.compile(r'^poll/(?P<poll_id>\d+)/$') 
r.match('poll/132/').groups() # ('132',)