码迷,mamicode.com
首页 > 其他好文 > 详细

用户登录功能实现 | Django开发

时间:2017-10-20 13:38:54      阅读:607      评论:0      收藏:0      [点我收藏+]

标签:style   存在   val   字符   出错   login   post   功能实现   时间   

处理登录页面
    # form表单中action对应url反向解析;
    1.创建处理登录页面视图,匹配url
        # 点击登录需要对数据进行校验;
    2.创建校验数据函数
            # 检测登陆参数是否合法
            def check_login_params(request):
                # 获取表单数据
                user_name = post(request, user_name)
                user_pass = post(request, user_pass)

                # 对数据校验
                if not (5 <= len(user_name) <= 20):
                    return False

                if not (8 <= len(user_pass) <= 20):
                    return False
                
                # 检测用户是否存在
                    user = User.objects.user_by_name(user_name)
                    if not user:
                        return False
                    else:
                        if user.user_pass == password_encryption(user_pass):
                            return True
                        else:
                            return False
    3.校验成功后
        # 记录用户状态;判断是否需要记录用户名;
        # 登录失败跳转至登录页面;
            # 处理登陆
            def login_handle(request):

                # 1.对用户名密码做简单校验
                # 在fuction中定义一个校验函数
                if check_login_params(request):
                    # 登陆成功后;
                    # 1.记录用户状态
                    # 2.是否需要记录用户名
                else:
                    # 用户登陆不成功
                    return redirect(reverse(user:login))
    4.写session记录用户状态
            # 设置cookie
            # 服务器端在接收到浏览器请求之后,返回过程中将用户名以键值对的形式写到cookie中;
            # 通过参数max_age来设置过期时间为24小时;
            def set_cookie(response, key, value):
                response.set_cookie(key, value, max_age=60*60*24)

            # 获取cookie
            # 浏览器带着cookie对服务器再次发出请求,服务器端处理请求,
            # 获取cookie中存有的用户名的值,写到html中返回给浏览器;
            # 传入的第二个参数‘‘,是为了防止数据为空导致程序出错,让其返回一个空字符串;
            def get_cookie(request, key):
                return request.COOKIES.get(key, ‘‘)

            # 删除cookie
            # 当服务器端处理完请求之后,想删除cookie,就在返回的过程中把cookie删除;
            def del_cookie(response, key):
                response.delete_cookie(key)

            # 设置session
            # 浏览器请求访问,验证成功之后,服务器端将用户名跟密码以键值对的方式存在session中,
            # session是存储在服务器端的,工作形式是:
            # 在存储的同时,生成一个sessionid标记每一个session,以键值对的形式存入一个cookie中,
            # 返回给浏览器;不标记session鬼知道是哪个浏览器访问服务器存的值?
            def set_session(request, key, value):
                request.session[key] = value

            # 获得session
            # 保持登录状态;
            # 在浏览器登陆验证成功之后,进入登入状态,服务器端返回登录处理结果以及存有sessionid的cookie;
            # 马上,浏览器就跳转访问首页,再次发起请求,带着这个cookie到服务器端,
            # 服务器端根据读取的sessionid,将对应的session从数据库中取出来,写到html中返回给浏览器;
            def get_session(request, key):
                return request.session.get(key, ‘‘)

            # 删除session
            # 在手动注销登陆的时候删除session;
            def del_session(request):
                request.session.flush()
        # 在用户登录成功在处理登录的视图中保留登录状态,并且因为勾选checkbox而保存用户名;
            # 处理登录
            # 在处理登入状态中,先要对用户名密码做简单的校验处理,满足条件,并且用户名存在;
            # 就记录登录状态,记录用户名;并返回到上一个页面;
            def login_handle(request):
                # 1.对用户名密码做简单校验
                # 在fuction中定义一个校验函数
                if check_login_params(request):
                    # 登陆成功后;
                    # 1.记录用户状态
                    keep_user_online(request)
                    # 2.是否需要记录用户名
                    # 处理登录之后要跳转上一个页面;
                    # response = redirect(get_redirect_url(request))
                    response = redirect(reverse(users:register))
                    remember_username(request, response)
                    return response
                else:
                    # 用户登陆不成功
                    return redirect(reverse(users:login)) 

 

用户登录功能实现 | Django开发

标签:style   存在   val   字符   出错   login   post   功能实现   时间   

原文地址:http://www.cnblogs.com/pymkl/p/7698757.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!