【发布时间】:2017-06-09 14:27:04
【问题描述】:
我在 Stack Overflow 上看到了与此类似但又非常不同的其他问题,因此请不要这么快投票结束。本质上,我一直在尝试按照我在每个在线教程中找到的技术制作一个非常简单的登录表单。由于某种原因,填写和提交表单不会返回任何 POST 请求数据。这是我的代码:
查看
def signon(request):
if request.method == 'POST':
form = SignOnForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username = username, password = password)
logger.info(user)
return HttpResponse('Username: {} Password {}'.format(username, password))
return HttpResponse("Error {}".format(request.POST))
if request.method == 'GET':
form = SignOnForm()
return render(request, 'signon.html', {'form': form})
模板
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<title>Sign into Account</title>
</head>
<body>
<form method = "POST">
{% csrf_token %}
{{ form }}
<input type = "submit" value = "Sign In">
</form>
</body>
</html>
表格
class SignOnForm(forms.ModelForm):
password = forms.CharField(widget = forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'password']
我正在使用 Django 提供的 User 类,由于某种原因,在提交完整的表单时,没有返回任何 POST 数据,因此为什么 is_valid 总是失败。有什么想法吗?
【问题讨论】:
-
您在表单模板中的操作在哪里?
-
我尝试使用动作
"/signon/",但它没有做任何事情 -
好吧,我尝试了您的代码,并且正确接收了 POST 数据。并且
is_valid不会失败 -
所以您在响应中获得了包含用户名和密码的页面?
-
是的。这是正确的。它向你展示了什么?
return HttpResponse("Error {}".format(request.POST))显示了什么?
标签: python django django-forms django-users