В чем разница между Reverse и Redirect в Django?

Я делаю проект django, и очень запутался в reverse, reverse_lazy и redirect.

Может ли функция redirect перенаправлять с параметрами? Или я должен изменить метод на обратный всякий раз, когда я хочу разместить параметры?

Может ли функция redirect перенаправлять с параметрами?

Да. Представьте, что у вас есть шаблон url с:

 path('foo/<str:bar>/<id:pk>/', name='some_path')

вы можете перенаправить на этот путь с помощью:

    return redirect('some_path', bar='value-for-bar', pk=1425)

очень путается в понятиях reverse, reverse_lazy и redirect.

reverse и reverse_lazy определяют путь для заданного имени представления. Этот путь является строкой, а не ответом HTTP, вы не можете вернуть такую строку в качестве результата для представления.

Функция redirect(…) [Django-doc] будет вызывать reverse(…) функцию [Django- doc] внутренне и обернет результат в HttpResponseRedirect [Django-doc] или HttpResponsePermanentRedirect [Django-doc].

Таким образом, он объединяет два слоя: слой urls для вычисления пути и слой view для построения HTTP ответа, поэтому он определен в модуле django.shortcuts [Django-doc].

Вернуться на верх