django和jinja2在模板

时间:2016-09-10 21:28:57

标签: django jinja2

我在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: [] 

2 个答案:

答案 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'