06_DJango登录视图

本文详细介绍了Django中实现登录视图的过程,包括数据验证、用户名和密码的验证,以及添加错误提示信息。在数据验证阶段,利用HTML5的内置验证功能,确保用户名和密码不为空。在验证用户名和密码时,通过ORM查询数据库,进行密码对比。最后,为登录失败或成功添加了相应的提示信息,提升用户体验。
摘要由CSDN通过智能技术生成

登录视图(来自刘江的Django:http://www.liujiangblog.com/course/django/108)

根据我们在路由中的设计,用户通过login.html中的表单填写用户名和密码,并以POST的方式发送到服务器的/login/地址。服务器通过login/views.py中的login()视图函数,接收并处理这一请求。

我们可以通过下面的方法接收和处理请求:

def login(request):
    if request.method == "POST":
        username = request.POST.get('username')
        password = request.POST.get('password')
        print(username, password)
        return redirect('/index/')
    return render(request, 'login/login.html')

说明:

  • 每个视图函数都至少接收一个参数,并且是第一位置参数,该参数封装了当前请求的所有数据;
  • 通常将第一参数命名为request,当然也可以是别的;
  • request.method中封装了数据请求的方法,如果是“POST”(全大写),将执行if语句的内容,如果不是,直接返回最后的render()结果,也就是正常的登录页面;
  • request.POST封装了所有POST请求中的数据,这是一个字典类型,可以通过get方法获取具体的值。
  • 类似get('username')中的键‘username’是HTML模板中表单的input元素里‘name’属性定义的值。所以在编写form表单的时候一定不能忘记添加name属性。
  • 利用print函数在开发环境中验证数据;
  • 利用redirect方法,将页面重定向到index页

启动服务器,然后在http://127.0.0.1:8000/login/的表单中随便填入用户名和密码,然后点击提交。然而,页面却出现了错误提示,如下图所示:

image

错误原因是CSRF验证失败,请求被中断。CSRF(Cross-site request forgery)跨站请求伪造,是一种常见的网络攻击手段,具体原理和技术内容请自行百科。Django自带对许多常见攻击手段的防御机制,CSRF就是其中一种,还有XSS、SQL注入等。

解决这个问题的办法其实在Django的Debug错误页面已经给出了,我们需要在前端页面的form表单内添加一个{% csrf_token %}标签:

                <form class="form-login" action="/login/" method="post">
                  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值