2015-09-11 93 views
-2

下面是我的表单提交的代码。当我提交表单时,is_valid总是返回false不知道是否想用我的代码出错。我刚开始学习Django的任何帮助,高度赞赏TIAform.is_valid()总是返回False在Django

HTML

{%extends 'base.html'%} 

{% block content %} 
    <div class="container"> 

     <form method="post" class="form-signin" action="/loginvalidation/">{% csrf_token %} 
     <h2 class="form-signin-heading">Please sign in</h2> 
     <label for="inputEmail" class="sr-only">Email address</label> 
     <input type="email" id="inputEmail" class="form-control" placeholder="Email address" required autofocus> 
     <label for="inputPassword" class="sr-only">Password</label> 
     <input type="password" id="inputPassword" class="form-control" placeholder="Password" required> 
     <div class="checkbox"> 
      <label> 
      <input type="checkbox" value="remember-me"> Remember me 
      </label> 
     </div> 
     <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button> 
     </form> 

    </div> 
{% endblock %} 

HTML文件

view.py 

def loginvalidation(request): 
    print request 
    form = LoginssForm(request.POST or None) 
    print form.is_valid() 
    if form.is_valid(): 
     save_it=form.save(commit=False) 
     print save_it.email 
     save_it.save() 
     user = authenticate(username='john', password='secret') 
     if user is not None: 
    # the password verified for the user 
      if user.is_active: 
       print("User is valid, active and authenticated") 
      else: 
       print("The password is valid, but the account has been disabled!") 
     else: 
    # the authentication system was unable to verify the username and password 
      print("The username and password were incorrect.") 
    return render(request,"about-us.html",locals(), context_instance=RequestContext(request))] 

查看。 PY为我的代码

Model.py 

class LogIn(models.Model): 
    email=models.EmailField(null=False,blank=False) 
    password=models.CharField(max_length=1201,null=True,blank=True) 
    timestamp=models.DateTimeField(auto_now_add=True,auto_now=False) 
    updated=models.DateTimeField(auto_now_add=False,auto_now=True) 

应用程序的应用模型的应用 型号的型号

form.py 

    class LogInForm(forms.ModelForm): 
     class Meta: 
      model=LogIn 
      fields = '__all__' 

以上是我的表单提交代码。当我提交表单时,form.is_valid总是返回False。我刚开始学习Django,非常感谢任何帮助。

+2

如果您打印'form.errors',它会告诉您表单中的错误。但是,我强烈建议您不要尝试在Django中创建自己的身份验证系统。使用包含的[Django附带的认证](https://docs.djangoproject.com/en/1.8/topics/auth/)更安全。 – Alasdair

+0

打印form.errors得到了这个,但我发送来自密码的值

  • password
    • 此字段是必填项。
  • 电子邮件
    • 此字段是必填项。
user1844634

回答

3

看起来您在HTML文件的字段中缺少一个“名称”属性,因此该值从未真正发布到Django。如果分别将name="email"name="password"分别添加到字段中,则值应该通过并开始正确验证。

然而,这就是说,我同意上面的Alasdair的评论。这将是更安全,并建议使用Django的内置身份验证系统。

+0

这是一个我正在学习的测试项目,我将只使用djnago auth。即使添加名称=“电子邮件”和名称=“密码”仍然不起作用 – user1844634

+1

@ user1844634你是什么意思*“我将只使用django auth ...”*?这与Django无关。您需要在表单输入上设置'name'属性,以便将数据发送到服务器。你知道HTML吗? – xyres