django 与 jinja2 在模板中使用模型的 get_absolute_url 定义
django with jinja2 using model's get_absolute_url definition in template
我在 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>
在我的模板中获取绝对 url 时,我得到一个错误:
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: []
你的 URL 叫做 "work_detail",而不是 "apps.web.views.work_detail"。您应该在 get_absolute_url 方法中使用该名称。
根据 reverse 函数的文档,第一个参数 "can be a URL pattern name or the callable view object"。因此,要么导入 work_detail
视图函数并将其直接传递给 reverse
函数(不带单引号),要么传递 URL 模式名称,即 'work_detail'
.
我在 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>
在我的模板中获取绝对 url 时,我得到一个错误:
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: []
你的 URL 叫做 "work_detail",而不是 "apps.web.views.work_detail"。您应该在 get_absolute_url 方法中使用该名称。
根据 reverse 函数的文档,第一个参数 "can be a URL pattern name or the callable view object"。因此,要么导入 work_detail
视图函数并将其直接传递给 reverse
函数(不带单引号),要么传递 URL 模式名称,即 'work_detail'
.