Выбор ответа Junior Django: устройство обновлено

Зачем name у маршрута и reverse

Вопрос

Зачем маршрутам дают name и строят ссылки через reverse() или {% url %}?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы менять путь в одном месте, а ссылки строились сами. Если путь orders/<int:pk/ поменяется, захардкоженные строки по всему проекту сломаются, а reverse("order-detail", args=[pk]) продолжит работать.

Варианты ответа

  1. Чтобы ускорить маршрутизацию: именованные маршруты резолвятся по индексу
  2. Без name маршрут не попадёт в urlpatterns и не будет работать
  3. Чтобы менять путь в одном месте, а ссылки строились самиправильный ответ
  4. Для автоматической генерации API-документации по именам маршрутов

Разбор

Если путь orders/<int:pk>/ поменяется, захардкоженные строки по всему проекту сломаются, а reverse("order-detail", args=[pk]) продолжит работать. На скорость роутинга name не влияет, маршрут работает и без имени, а документация строится другими средствами.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.