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

Python 为什么我们需要使用“get_absolute_url()”而不是自定义的类似方法?,python,django,python-3.x,django-models,Python,Django,Python 3.x,Django Models,下面是在my Tag model类中使用的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,它仍然可以工作 由于

下面是在my Tag model类中使用的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。

使用特定名称get_absolute\u url的原因是Django中有各种内置功能,如果提供了该名称,它们将使用该名称。例如,在中,该方法将用作成功保存时重定向到的目标


另一个例子是在admin中,如果对象的更改页面上存在,则将使用该方法。

这不是一个自定义方法,而是一个自定义名称,因为两者都执行相同的操作。请参阅。Django例如,在管理中使用它链接到网站中对象的详细信息页。@guillermo chamorro逻辑上可能是相同的,但技术上两者都是不同的方法,对吗?@Angom我认为你是对的,因为该方法必须在父类中,你可以重写它。@Schwobasegl我理解,即使我在我的应用程序中也这样做,但我担心的是,即使我使用不同的方法名,同样的功能也可以工作,那么具体实现它的意义是什么呢。文档可能会提到创建“方法”而不是“获取绝对url”