2009-07-06 2 views
1

이 주어하십시오 urls.py 파일에Django : 템플릿 파일에서 사용할 수있는 URL에서 캡처 한 정보?

urlpatterns = \ 
    patterns('blog.views',            
     (r'^blog/(?P<year>\d{4})/$', 'year_archive', {'foo': 'bar'}), 
    ) 

. (그것은 'archive_year'의 대신 를이어야한다 'year_archive'- 심판은 아래를 참조하십시오.)

사용에 대한 URL 일치 (이 경우 "년"의 값)의 정보를 캡처 할 수 있나요 옵션 사전? 예 : 'bar'대신 년의 가치가 있습니까?

'bar'를 연도로 바꾸면 "NameError ... 'year'이 정의되지 않았습니다.".

위의 예는 단지 예일뿐입니다. 그 연도는 이며, archive_year의 템플릿 HTML 파일 에서 사용할 수 있지만 archive_month의 경우는 아닙니다. 그리고 은 템플릿 파일 인 HTML 파일에 이 필요한 URL에 표시된 사용자 정의 정보 일 수 있습니다.

는 (예제 페이지에서 "URL 발송자", "절 기능을 볼 수 추가 옵션을 전달", 장고 문서에 http://docs.djangoproject.com/en/dev/topics/http/urls/, 입니다.)

+0

스 니펫에 구문 오류가 있습니다. 2 번 줄에 따옴표가 없습니다. 또한 (FYI) 괄호 안에있는 경우 (2 행 및 3 행)에는 줄 연속 문자가 필요하지 않습니다. – cdleary

+0

감사합니다. 지금 수정되었습니다. –

답변

4

아니, 그게 URLConf 내에서 불가능합니다 - 운영자는 고정 세트를 사용합니다. (정규 표현식에서 그룹 사전을 가져 와서 뷰 함수에 키워드 인수로 전달합니다.) (사용자 정의) 뷰 함수 내에서 그 값을 템플릿 컨텍스트로 전달하는 방법을 조작 할 수 있어야합니다. 같은 것이 URLConf 주어진 "foo는"전년를 매핑하는 사용자 정의보기를 작성

: 파이썬이 찾고 있기 때문에 당신이 설명하고있는 경우에 NameError를 얻을 수

def custom_view(request, year, foo): 
    context = RequestContext(request, {'foo': year}) 
    return render_to_response('my_template.tmpl', context) 

이유는 주변 범위에 year이라는 식별자가 있고 거기에 존재하지 않습니다. 정규 표현식 패턴의 하위 문자열 일뿐입니다.

+0

+1 : 뷰 기능은 템플릿의 렌더링 대상에 적절한 요청을 매핑하는 기능입니다. –

+0

모든 변수를 전달하기위한 바로 가기로서'locals()'를 사용할 수도 있습니다 :'context = RequestContext (request, locals())'이것은 모든 지역 변수가 전달되기 때문에 꽤 위험합니다. 좋은 지름길. –

+0

나는 "느리고 위험한"팬이 아니다. ;-) – cdleary