#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. Да, я добавил, что