为什么我们需要使用“ get_absolute_url()”而不是自定义定义的类似方法?

时间:2018-09-03 17:10:10

标签: python django python-3.x django-models

下面是我的Tag模型类中使用的方法 get_absolute_url()

def get_absolute_url(self):
    return reverse('post_by_tag', args=[self.slug])

下面是我在模板中访问它的方式:

<a href="{{ tag.get_absolute_url }}">{{ tag }}</a>

工作正常。但是,如果我在模型文件和模板文件中将其更改为类似 get_abs()的方法名称,则它仍然有效。

由于我可以使用自定义方法,所以我只想知道是否有特定原因使用get_absolute_url()作为获取URI的方法名称。还是只是一个约定?

我正在使用Python 3.6.6和Django 2.1。

1 个答案:

答案 0 :(得分:1)

使用特定名称get_absolute_url的原因是Django中有各种内置功能,如果提供了该名称,它们将使用该名称。 generic editing class-based views中就是一个示例,该方法将用作成功保存后重定向到的目标。

另一个示例是在管理员中,对象更改页面上的'view on site' link将使用该方法(如果存在)。