form.is_valid()始终返回false而不显示任何错误 [英] form.is_valid() is always returning false without showing any errors

查看:391
本文介绍了form.is_valid()始终返回false而不显示任何错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对python和Django很新,我正在使用Django的内置用户系统来创建注册。
这是我的观点
`

  def register_user(request):
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)
pre>

`
,这里是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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆