簡體   English   中英

NoReverseMatch和urls.py

[英]NoReverseMatch and urls.py

每當我嘗試使用gitpaste運行搜索時,我都會收到TemplateSyntaxError

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

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'),
)

通過閱讀Django文檔,似乎我需要owner的url模式。 這是我得到的其余錯誤:

渲染時捕獲到NoReverseMatch:找不到帶有參數'()'和關鍵字參數'{'owner':5}'的'owner_pastes'反向。

好像URL在那里。 怎么了?

根據以下行,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>

旁注:請注意,對於Django> = 1.5,您需要將第一個參數用引號引起來(否則將其視為變量):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM