【发布时间】: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: <bound method MultiValueDict.get of <QueryDict: {}>>和your_name: None
标签: html django forms input action