WD5 - разработка сайтов

Django. AttributeError: module 'django.db.models' has no attribute 'permalink'

В новых версиях Django декоратор @pemalink для получения адреса страницы перестал признан устаревшим и перестал работать. Причины - дублирования функционала с функцией reverse() и возможные проблемы в безопасности.

Для исправления необходимо удалить старый декоратор, добавить импорт функции reverse, и изменить ответ в соответствии с параметрами функции.

Пример рефакторинга кода со старой версии на новую.

# старый код
@models.permalink
def get_absolute_url(self):
    return 'news.page', [str(self.slug)]

# новый код
def get_absolute_url(self):
    from django.urls import reverse
    return reverse('news.page', args=[str(self.slug)])