Вы проверяете метод, сравнивая request.method
[Django-doc] с нужным вам методом, поэтому здесь request.method == 'POST'
.request.POST
[Django-doc] - это QueryDict
, который содержит параметры в запросе POST, но не каждый запрос POST имеет параметры POST.Если такой запрос POST не имеет параметров, то if request.POST
завершится неудачей.
Таким образом, вы можете использовать:
if <b>request.method == 'POST'</b>:
print('hello')
return HttpResponseRedirect('/thank-you/')
else:
return render(request, 'account.html')
При этом, возможно, вы захотите использовать redirect(..)
[Джанго-док] вместо.redirect(..)
- это ярлык, в котором вы можете указать название представления.Если позже вы измените путь к представлению, это все равно будет работать, поэтому:
from django.shortcuts import <b>redirect</b>
if request.method == 'POST':
print('hello')
return <b>redirect('name-of-view')</b>
else:
return render(request, 'account.html')
* redirect(..)
выполнит «обратный поиск» и превратит созданный им путь в HttpResponseRedirect(..)
объект.Таким образом, по сути это точно то же самое, но этот метод более «стабилен», поскольку, как уже говорилось, если вы измените свой urls.py
, обратный поиск все равно будет успешным.