Формы Django не получают входные данные
Я использую метод forms.py от Django для создания формы, но не получаю никаких данных при попытке получить входные данные, выполняя request.POST.get('value') на нем. Для каждого оператора print, который дал ответ, я поместил комментарий рядом с командой с тем, что она вернула в терминале.
Дополнительно, я не понимаю, для чего в форме нужно действие = "адрес". Наконец, проверка csrf не работала и все время возвращала сообщение CSRF verification failed, поэтому я отключил ее, но если кто-то знает, как заставить это работать, я буду благодарен.
forms.py
from django import forms
class NameForm(forms.Form):
your_name = forms.CharField(label='Enter name:', max_length=100)
views.py
@csrf_exempt
def blank(request):
if request.method == 'POST':
get = request.POST.get
print(f"get: {get}") # get: <bound method MultiValueDict.get of <QueryDict: {}>>
print(f"your_name: {request.POST.get('your_name')}") # your_name: None
form = NameForm(request.POST)
if form.is_valid():
your_name = form.cleaned_data["your_name"]
print(f"your_name cleaned: {your_name}")
return HttpResponseRedirect('/thanks/')
else:
form = NameForm()
return render(request, 'blank.html', {'form': form})
blank.html
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<form action="" method="post">
{{ form }}
<input type="submit" value="Submit">
</form>
</body>
</html>
Попробуйте сделать это... и нужно включить csrf, иначе он не будет рассматривать запрос...
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
</body>
</html>