在我的模板中,我为文本文章对象设置了如下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
,所以不需要避开大括号:相关问题 更多 >
编程相关推荐