Формы Django не получают ввод

#html #django #forms #input #action

#HTML #джанго #формы #вход #Экшен

Вопрос:

Я использую Джанго forms.py метод создания формы, но я не получаю никаких данных при попытке получить ввод, выполнив запрос.POST.get («значение») на нем. Для каждой инструкции печати, которая давала ответ, я помещал комментарий рядом с командой с тем, что она возвращала в терминале.

Кроме того, я не понимаю, для чего в форме предназначено действие = «адрес». Наконец, проверка csrf не работала и продолжала возвращаться, проверка CSRF не удалась, поэтому я отключил ее, но если кто-нибудь знает, как заставить это работать, я был бы признателен.

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: lt;bound method MultiValueDict.get of lt;QueryDict: {}gt;gt;   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

 lt;!DOCTYPE htmlgt; lt;html lang="en"gt;  lt;headgt;  lt;/headgt;  lt;bodygt;  lt;form action="" method="post"gt;  {{ form }}  lt;input type="submit" value="Submit"gt;  lt;/formgt;  lt;/bodygt; lt;/htmlgt;  

Комментарии:

1. action пусто. Вы должны заполнить его с помощью API.

2. @16350436, можете ли вы привести пример того, что мне там понадобится?

3.В. blank.html action="{% url "blank" %}" В urls.py path('blank', views.blank, name='blank'),

4. @16350436, я все еще получаю get: lt;bound method MultiValueDict.get of lt;QueryDict: {}gt;gt; и your_name: None

Ответ №1:

Попробуйте сделать это.. и должны включить csrf, иначе он не будет рассматривать запрос post..

 lt;!DOCTYPE htmlgt; lt;html lang="en"gt;  lt;headgt;  lt;/headgt;  lt;bodygt;  lt;form action="" method="post"gt;  {% csrf_token %}  {{ form.as_p }}  lt;input type="submit" value="Submit"gt;  lt;/formgt;  lt;/bodygt; lt;/htmlgt;  

Комментарии:

1. Обычно да, но по какой-то причине автор придерживается @csrf_exempt своего мнения.

2. @роб Спасибо.. я не заметил

3. @TariqAhmed, Привет, спасибо. Я пробовал это, но всякий раз, когда я добавляю csrf_token, я получаю один и тот же экран «403: Запрещенный маркер CSRF отсутствует или неверен» .

4. {{ form.as_p }} Вы пробовали это сделать?

5. Да, я добавил, что