【问题标题】:Django forms not receiving inputDjango 表单未接收输入
【发布时间】:2022-01-14 09:46:58
【问题描述】:

我正在使用 Django 的 forms.py 方法来构建一个表单,但是在尝试通过对其执行 request.POST.get('value') 来获取输入时没有得到任何数据。对于每条给出响应的打印语句,我都会在命令旁边添加一条注释,其中包含它在终端中返回的任何内容。

另外,我不明白表单中的 action = "address" 是什么意思。最后,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: <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})

空白.html

<!DOCTYPE html>
<html lang="en">
    <head>
    </head>
    <body>
        <form action="" method="post">
            {{ form }}
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

【问题讨论】:

  • action 为空。您应该使用 API 填写它。
  • @16350436,你能举个例子说明我需要什么吗?
  • blank.htmlaction="{% url "blank" %}"。在urls.pypath('blank', views.blank, name='blank'),
  • @16350436,我仍然收到get: &lt;bound method MultiValueDict.get of &lt;QueryDict: {}&gt;&gt;your_name: None

标签: html django forms input action


【解决方案1】:

尝试这样做..并且必须包含 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>

【讨论】:

  • 通常是的,但无论出于何种原因,作者确实有@csrf_exempt 的观点。
  • @rob 谢谢.. 我没注意到
  • @TariqAhmed,您好,谢谢。我试过了,但是每当我添加 csrf_token 时,我都会得到相同的“403:禁止的 CSRF 令牌丢失或不正确”屏幕
  • {{ form.as_p }}你试过了吗?
  • 是的,我添加了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-04
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
相关资源
最近更新 更多