从django中的表单中提取用户名和密码

时间:2014-12-30 04:54:16

标签: html django forms twitter-bootstrap django-authentication

半年前我开始在Django开展一个项目,并把它放在后面,因为我无法弄清楚一个小细节,但我重新回到了这个项目,并认为我可能会在这里得到快速反应。

我的网站工具栏中有一个迷你表单,该表单由以下HTML生成:

    <form action="/auth/" method="post" class="navbar-form navbar-right" role="form"> {% csrf_token %}
    <div class="form-group">
      <input type="text" placeholder="Email" class="form-control">
    </div>
    <div class="form-group">
      <input type="password" placeholder="Password" class="form-control">
    </div>
    <button type="submit" class="btn btn-primary">Login</button>
    <a class="btn btn-primary" href="/register/">Signup</a>
  </form>

Here's the result

目标是避免单独的登录页面,只需将其保留在顶部,直到用户登录。

目标是使用Django的身份验证来记录此用户。

def auth_view(request):
   email = request.POST.get('username', '')
   password = request.POST.get('password', '')
   print "username is ", email, "password is ", password
   user = auth.authenticate(username=email, password=password)

   if user is not None:
     auth.login(request, user)
     return HttpResponseRedirect('/loggedin/')
   else:
     return HttpResponseRedirect('/invalid/')

以上代码是我想要处理点击登录按钮的代码,由我的urls.py提供。 但是,无论何时我提交表单,我的调试语句总是说电子邮件和密码是空字符串。因此,我必须从表单中错误地提取信息。

我如何成功登录?请帮忙!

谢谢, erip

1 个答案:

答案 0 :(得分:2)

您无法从请求对象中获取值的原因是两个输入都没有name属性。 request.POST.get('username', '')尝试获取名称属性为username的输入值,在您的情况下,该属性不存在。因此,添加name属性,应该为您完成。

您可以进一步利用Django的表单模块,该模块自动为每个字段生成并分配name属性,最终将这些输入绑定回您的登录表单。关于官方docs的更多信息。