Почему нам нужно использовать get_absolute_url () вместо пользовательских методов, аналогичных определенным? - PullRequest
0 голосов
/ 03 сентября 2018

Ниже приведен метод get_absolute_url () , используемый в моем классе модели Tag:

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 голосов
/ 03 сентября 2018

Причина использования определенного имени get_absolute_url заключается в том, что в Django есть различные встроенные функции, которые будут использовать это имя, если оно предоставлено. Один из примеров - общие виды редактирования на основе классов , где этот метод будет использоваться в качестве места назначения для перенаправления при успешном сохранении.

Другой пример - администратор, где ссылка «просмотр на сайте» на странице изменений объекта будет использовать этот метод, если он существует.

...