[英]Django gives NoReverseMatch error after changes to urlpattern
在我的模板中,我將文本文章對象的URL設置為:
<a href="{{texto.get_absolute_url}}">Text</a>
,其中我的文本模型對象的get_absolute_url
方法在models.py
定義,如下所示:
def get_absolute_url(self):
return reverse('viva.views.texto_completo', kwargs = {'anno': self.fecha_cr.strftime('%Y'),
'mes': self.fecha_cr.strftime('%m'),
'dia': self.fecha_cr.strftime('%d'),
'slug': self.slug})
urls.py
相關的urlpattern是這樣的:
urlpatterns = patterns('',
...
url(r'^(?P<anno>\d{{4}})/(?P<mes>\d{{2}})/(?P<dia>\d{{2}})/(?P<slug>[-\w]+)/$', texto_completo),
)
Django給我一個NoReverseMatch錯誤:
Reverse for 'viva.views.texto_completo' with arguments '()' and keyword arguments '{'anno': '2015', 'dia': '12', 'mes': '06', 'slug': u'jacarandas-walk-johannesburgo'}' not found. 1 pattern(s) tried: ['(?P<anno>\\d{{4}})/(?P<mes>\\d{{2}})/(?P<dia>\\d{{2}})/(?P<slug>[-\\w]+)']
這看起來很奇怪,因為以前的版本完美無缺。 在工作版本中, get_absolute_url
定義為:
def get_absolute_url(self):
some logic to figure out 'tema' value
...
return reverse('viva.views.texto_completo', kwargs = {'tema': tema,
'anno': self.fecha_cr.strftime('%Y'),
'mes': self.fecha_cr.strftime('%m'),
'dia': self.fecha_cr.strftime('%d'),
'slug': self.slug})
而模式是這樣的:
urlpatterns = patterns('',
...
url(r'^(?P<tema>[-\w]{{1,{l1}}})/(?P<anno>\d{{4}})/(?P<mes>\d{{2}})/(?P<dia>\d{{2}})/(?P<slug>[-\w]+)/$'.format(l1=settings.MAX_LENGTH_TEMA), texto_completo),
)
現在我似乎無法讓新版本工作。 是什么賦予了?
由於您不再使用.format
,因此您無需轉義花括號:
^(?P<anno>\d{4})/(?P<mes>\d{2})/(?P<dia>\d{2})/(?P<slug>[-\w]+)/$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.