2014-05-20 3 views
0

내가 gitpaste 사용하여 검색을 실행하려고 할 때마다 나는 TemplateSyntaxError 무엇입니까 : 장고를 읽고에서NoReverseMatch 및 urls.py

from django.conf.urls.defaults import patterns, include, url 
from django.views.generic.simple import redirect_to 

urlpatterns = patterns('saic.paste.views', 
    url(r'^live/$', 'live_paste', name='live_paste'), 
    url(r'^(?P<pk>\d+)/$', redirect_to, {'url': '/paste/%(pk)s/'}), 
    url(r'^(?P<pk>\d+)/(?P<private_key>[a-zA-Z0-9]+)?/?$', redirect_to, {'url': '/paste/%(pk)s/%(private_key)s/'}), 
    url(r'^owner/$', redirect_to, {'url': '/owner/all/'}), 
    url(r'^owner/anonymous/', 'user_pastes', name='anon_pastes'), 
    url(r'^owner/(?P<owner>.+)/', 'user_pastes', name='user_pastes'), 
    url(r'^paste/(?P<pk>\d+)/adopt/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_adopt', name='paste_adopt'), 
    url(r'^paste/(?P<pk>\d+)/embed/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_embed', name='paste_embed'), 
    url(r'^paste/(?P<pk>\d+)/edit/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_edit', name='paste_edit'), 
    url(r'^paste/(?P<pk>\d+)/fork/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_fork', name='paste_fork'), 
    url(r'^paste/(?P<pk>\d+)/favorite/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_favorite', name='paste_favorite'), 
    url(r'^paste/(?P<pk>\d+)/delete/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_delete', name='paste_delete'), 
    url(r'^paste/(?P<pk>\d+)/raw/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_raw', name='paste_raw'), 
    url(r'^commit/(?P<pk>.+)/adopt/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'commit_adopt', name='commit_adopt'), 
    url(r'^commit/(?P<pk>.+)/download/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'commit_download', name='commit_download'), 
    url(r'^paste/(?P<pk>\d+)/(?P<private_key>[a-zA-Z0-9]+)?/?$', 'paste_view', name='paste_view'), 
    url(r'^users/$', 'users', name='users'), 
    url(r'^favorites/$', 'favorites', name='favorites'), 
    url(r'^accounts/login/$', 'login', name='login'), 
    url(r'^accounts/logout/$', 'logout', name='logout'), 
    url(r'^accounts/register/$', 'register', name='register'), 
    url(r'^accounts/preference/$', 'preference', name='preference'), 
    url(r'^accounts/timezone/$', 'set_timezone', name='set_timezone'), 
    url(r'^$', 'paste', name='paste'), 
) 

다음 urls.py는 다음과 같이 배치되어

<a href='{% url owner_pastes owner=result.object.owner.pk %}'> 
     {{ result.object.owner }} 
</a> 

문서, 그것은 owner에 대한 URL 패턴이 필요한 것 같습니다. 렌더링하는 동안 NoReverseMatch을 잡았다

:이 오류 나는 점점 오전의 나머지 부분입니다 찾을 수 없습니다 인수 'owner_pastes' '()'및 키워드 인자 '{' '5 소유자}'에 대한 역.

URL이있는 것 같습니다. 뭐가 잘못 되었 니?

답변

1

URL의 이름이 아닌 owner_pastes하지만 user_pastes 다음 줄에 따라 수 있습니다 :

url(r'^owner/(?P<owner>.+)/', 'user_pastes', name='user_pastes'), 

이 시도 :

<a href='{% url user_pastes owner=result.object.owner.pk %}'>{{ result.object.owner }}</a> 

사이드 노트 :주의, 장고> = 1.5, 첫 번째 매개 변수를 따옴표로 묶어야합니다 (그렇지 않으면 변수로 처리됩니다).

<a href='{% url "user_pastes" owner=result.object.owner.pk %}'>{{ result.object.owner }}</a> 
+0

+1 +1 orks! 나는 아직도 배우고있다. 고마워요 – Brian

+1

문제 없습니다. 이런 종류의 에러를 위해 URL 이름 (여기서는'user_' 대신'owner_')이나 매개 변수의 수에 오타가 없었는지 먼저 확인하십시오. '% url %}'문제의 90 %를 죽일 것입니다.) –

+0

사실 django 1.4와 1.5의 몇 가지 변경 사항이 있습니다. 1.4에서는'{% url handler-name argname0 = 'arg0'argname1 = 'arg1'%}'과 같은 식으로 처리 할 수 ​​있지만 1.5에서'{% url 'handler-name'... %}' 구문 오류가 여기에 있습니다 – Surya