form.is_valid()始终返回false而不显示任何错误 [英] form.is_valid() is always returning false without showing any errors
问题描述
这是我的观点
`
def register_user(request):
pre>
if request.method =='POST':
form = UserCreationForm(data = request.POST)
如果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模板。{%extendsbase.html%}
{%block content%}
< h2>注册< / h2>
< form action =/ accounts / register /method =post> {%csrf_token%}
{{form.errors}}
{{form .non_field_errors}}
{{form}}
< input type =submitvalue =注册/>
< / form>
{%endblock%}
无论什么,form.is_valid总是返回错误而不发出任何错误。我一直在尝试,因为永远。
编辑:我将视图更改为下面的一个,它现在正在工作,但我没有得到确切的原因,在这两个视图中也没有缩进错误
def register_user(request):
如果request.method =='POST':
form = UserCreationForm(request.POST)
如果form.is_valid():
form.save()
返回HttpResponseRedirect('/ accounts / register_success')
其他:
form = UserCreationForm()
args = {}
args.update(csrf(request))
args ['form'] = form
返回render_to_response('register.html',args)
任何帮助都非常感谢。
提前感谢:D,还有新年快乐:P。解决方案它没有显示任何错误,因为您总是重新实例化一个新的,未绑定的表单。不要这样做文档中的模式是非常清楚的,你应该遵循它。
if request.method =='POST':
form = UserCreationForm(data = request.POST)
如果form.is_valid():
form.save()
返回HttpResponseRedirect('/ accounts / register_success')
否则:
form = UserCreationForm()
args = {}
args.update(csrf(request))
args ['form'] = form
return render_to_response('register.html',args)
I am pretty new to python and Django and I am using the built-in user system of Django to create a registration from. Here's my view `
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)
` and here's the register.html template.
{% 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 %}
No matter what, form.is_valid() is always returning false without giving out any errors. I have been trying it since forever.
EDIT: I changed the view to the below one, it is working now, but I am not getting the exact reason, also there are no indentation errors in both the views.
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)
Any help is greatly appreciated. Thanks in advance :D and also Happy new year :P.
解决方案It doesn't show any errors because you always re-instantiate a new, unbound, form. Don't do that; the pattern in the docs is perfectly clear and you should follow it.
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)
这篇关于form.is_valid()始终返回false而不显示任何错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!