#django
#django
Вопрос:
В чем разница между
def post(self, request, *args, **kwargs):
if form.is_valid():
order = form.save(commit=False)
order.user = request.user
order.save()
return redirect('orders:success')
и
def post(self, request, *args, **kwargs):
if form.is_valid():
order = form.save(commit=False)
order.user = request.user
order.save()
return render(
request,
'orders/success.html',
{}
)
Я думаю, что это совершенно одно и то же.
Есть разница?
Комментарии:
1. как новичку, я думаю, совершенно ясно, почему можно подумать, что они одинаковы: или, более конкретно, почему они будут иметь одинаковый конечный результат в этом случае. Я тоже пытаюсь выяснить, что предпочтительнее…
Ответ №1:
Оба они совершенно разные, когда перенаправление выдает HttpResponseRedirect для переданного вами аргумента.
пример
return redirect('https://example.com/')
приведет вас к https://example.com / страница
return render(request,'/result.html',{'foo':'bar'})
отображает контекстный словарь в шаблоне ‘result.html ‘ и возвращает объект HttpResponse с этим отображаемым текстом
result.html … {foo} … где foo будет заменен на bar Для получения более подробной информации загляните в эту документацию django
Ответ №2:
Функция рендеринга Combines a given template with a given context dictionary and returns an HttpResponse object with that rendered text.
Вы запрашиваете страницу, и render
функция возвращает ее.
redirect
Функция отправляет другой запрос на указанный URL.