Django Form - метод POST не распознается как POST в представлениях
В моем проекте django я пытаюсь создать форму, к которой пользователь будет обращаться по определенному url.
При нажатии на url пользователь будет автоматически перенаправлен на pager_id
.
Между нажатием пользователем на указанный url и перенаправлением на page_id
, форма будет передана в фоновом режиме, без какого-либо шаблона.
Небольшая проблема, форма не проходит if request.method == "POST":
.
Я знаю это, потому что в консоль выводится this is not a post request
.
Я думаю, что это, вероятно, первый раз, когда я не использую шаблон для отображения формы.
Обычно я указываю что-то вроде:
<form "method="POST">
{% csrf_token %}
</form>
Но на этот раз я этого делать не буду. Все обрабатывается в представлении.
Вопрос:
Предполагая, что именно это является причиной проблемы: требует ли Django использовать шаблон для отображения формы? Или есть способ указать method="POST"
другим способом? Или есть что-то еще, чего я не вижу?
views.py
def function(request, page_id):
form = myform(request.POST)
if request.method == "POST":
print('this is a post request')
if form.is_valid():
data = form.save(commit=False)
...
data.save()
return redirect('page', page_id=page_id)
else:
form = myform()
print('this is not a post request') #<-- this is what gets printed in the console
else:
print('Come back later!')
return redirect('page', page_id=page_id)
Это должно решить проблему :-
<form method="POST">
{% csrf_token %}
</form>