3

我想了解使用 get_absolute_url 调用而不是 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>

url 模板标签:

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

谢谢您的帮助,

胡里奥

4

2 回答 2

2

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

然而,get_absolute_url一般来说,模型的 url 是一个持续的讨论点

于 2013-08-13T13:07:39.593 回答
0

如果仅“位于”一个位置(即模型中),我发现在模板中管理我的所有 url 会更容易。所以每次我需要一个与对象相关的 url 时,我都会使用 get_absolute_url。

但由于 Django 1.5 @permalink已弃用,您必须改用reverse()。请检查文档

于 2013-08-13T13:10:33.813 回答