form.is_valid() 总是返回 false 而不显示任何错误
form.is_valid() is always returning false without showing any errors
我是 python 和 Django 的新手,我正在使用 Django 的内置用户系统创建注册。
这是我的观点
`
def register_user(request):
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
form.save()
#print 'success'
return HttpResponseRedirect('/accounts/register_success')
#print 'fail'
args = {}
args.update(csrf(request))
args['form'] = UserCreationForm()
#print args
return render_to_response('register.html',args)
`
这是 register.html 模板。
{% extends "base.html" %}
{% block content %}
<h2>Register</h2>
<form action="/accounts/register/" method="post">{% csrf_token %}
{{ form.errors }}
{{ form.non_field_errors }}
{{form}}
<input type="submit" value="Register" />
</form>
{% endblock %}
无论如何,form.is_valid() 总是返回 false 而不会给出任何错误。 我一直在尝试它。
编辑:我将视图更改为下面的视图,它现在正在工作,但我没有得到确切的原因,而且两个视图中都没有缩进错误。
def register_user(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
else:
form = UserCreationForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('register.html', args)
非常感谢任何帮助。
在此先感谢 :D 和新年快乐 :P.
它不会显示任何错误,因为您总是 re-instantiate 一个新的、未绑定的表单。不要那样做;文档中的模式非常清楚,您应该遵循它。
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
else:
form = UserCreationForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('register.html',args)
您的意见中没有任何其他条件;
您必须编写 args['form'] = UserCreationForm()
函数的开头;例如;
def register_user(request):
args = {}
args['form'] = UserCreationForm()
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
args.update(csrf(request))
return render_to_response('register.html',args)
我是 python 和 Django 的新手,我正在使用 Django 的内置用户系统创建注册。 这是我的观点 `
def register_user(request):
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
form.save()
#print 'success'
return HttpResponseRedirect('/accounts/register_success')
#print 'fail'
args = {}
args.update(csrf(request))
args['form'] = UserCreationForm()
#print args
return render_to_response('register.html',args)
` 这是 register.html 模板。
{% extends "base.html" %}
{% block content %}
<h2>Register</h2>
<form action="/accounts/register/" method="post">{% csrf_token %}
{{ form.errors }}
{{ form.non_field_errors }}
{{form}}
<input type="submit" value="Register" />
</form>
{% endblock %}
无论如何,form.is_valid() 总是返回 false 而不会给出任何错误。 我一直在尝试它。
编辑:我将视图更改为下面的视图,它现在正在工作,但我没有得到确切的原因,而且两个视图中都没有缩进错误。
def register_user(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
else:
form = UserCreationForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('register.html', args)
非常感谢任何帮助。 在此先感谢 :D 和新年快乐 :P.
它不会显示任何错误,因为您总是 re-instantiate 一个新的、未绑定的表单。不要那样做;文档中的模式非常清楚,您应该遵循它。
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
else:
form = UserCreationForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('register.html',args)
您的意见中没有任何其他条件;
您必须编写 args['form'] = UserCreationForm()
函数的开头;例如;
def register_user(request):
args = {}
args['form'] = UserCreationForm()
if request.method == 'POST':
form = UserCreationForm(data=request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
args.update(csrf(request))
return render_to_response('register.html',args)