我想了解使用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>
感谢您的帮助,
胡
答案 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