簡體   English   中英

更改為urlpattern后,Django會出現NoReverseMatch錯誤

[英]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.

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