get_absolute_url和url模板标记

时间:2013-08-13 12:58:08

标签: python django url

我想了解使用get_absolute_url调用而不是url模板标记有什么好处。

get_absolute_url:

class Project(models.Model):

   @permalink
   def get_absolute_url(self):
       return ('view_project', (), {'project_id': self.pk})

<a href="{{ project.get_absolute_url }}"> {{ project.name }}</a>

网址模板标记:

<a href="{% url 'view_project' project.pk %}"> {{ project.name }}</a>

感谢您的帮助,

2 个答案:

答案 0 :(得分:2)

唯一明显的优势是您可以更改该模型的网址名称,而无需重写所有模板。此外,如果你定义一个get_absolute_url函数(你不必在你的模板中使用它),这提供了一些额外的好处,比如在Django的管理员中添加View on site按钮或提供后备成功基于类的模型视图的url。

但是,get_absolute_url和模型的一般网址是ongoing point of discussion

答案 1 :(得分:0)

如果只在一个地方“定位”,即在模型中,我发现在模板中管理我的所有网址会更容易。所以每次我需要一个与对象相关的url时我都会使用get_absolute_url。

但由于不推荐使用Django 1.5 @permalink ,因此您必须使用 reverse()。请check documentation