我在Django 1.10中使用jinja2作为我的模板引擎。我有一个定义为:
的模型 def get_absolute_url(self):
return reverse('apps.web.views.work_detail', kwargs={'year':self.created_at.year,
'month':self.created_at.strftime("%m"),
'day':self.created_at.strftime("%d"),
'slug':self.slug,
'workId':self.id})
我的urls.py有:
url(r'^ardiye/çalışmalar/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+),(?P<workId>\d)/$', work_detail, name='work_detail')
当我使用我的模型定义通过<a href='{{next_work.get_absolute_url() }}' class='directional-menu-prev'>Önceki</a>
获取模板中的绝对网址时出现错误:
NoReverseMatch at /
Reverse for 'apps.web.views.work_detail' with arguments '()' and keyword arguments '{'year': 2016, 'slug': 'kksjs', 'month': '09', 'day': '10', 'workId': 2}' not found. 0 pattern(s) tried: []
答案 0 :(得分:1)
您的网址名为&#34; work_detail&#34;,而不是&#34; apps.web.views.work_detail&#34;。您应该在get_absolute_url方法中使用该名称。
答案 1 :(得分:1)
基于reverse函数的文档,第一个参数“可以是URL模式名称或可调用视图对象”。因此,要么导入work_detail
视图函数并将其直接传递给reverse
函数(不带单引号),要么传递URL模式名称,即'work_detail'
。