stympel
@stympel
подпивасник

Зачем нужен reverse()?

Всем привет, прочитал доку, вроде бы и понятно, но как-то непонятно. Кто может понятно объяснить, зачем нужен reverse()? Зачем он нужен в принципе и зачем он нужен в частности в get_absolute_url?
  • Вопрос задан
  • 6034 просмотра
Решения вопроса 1
deepblack
@deepblack
reverse позволяет по имени вьюхи получить её url.

from news import views

path('archive/', views.archive, name='news-archive')


from django.urls import reverse

reverse('news-archive')


get_absolute_url - позволяет получить канонический URL обьекта, при условии что этот метод определён.

# Можно так:
def get_absolute_url(self):
    return "/people/%i/" % self.id

# Но лучше так:
def get_absolute_url(self):
    from django.urls import reverse
    return reverse('people.views.details', args=[str(self.id)])


<a href="{{ object.get_absolute_url }}">{{ object.name }}</a>


Ну и в догонку:

spoiler
<!-- Так не надо делать -->
<a href="/language/category/product/{{product.pk}}">Link</a>

<!-- надо так -->
<a href="{{product.get_absolute_url}}">Link</a>

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы