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

用户登陆

时间:2017-10-19 17:36:22      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:self   post   文件   obj   pos   com   dex   有效期   判断   

在ueser应用中的urls中定义登陆的url

url(r‘^login$‘, views.LoginView.as_view(), name="login"),

在视图函数views中定义处理的请求函数:

class LoginView(View):
    """登录"""
    def get(self, request):
        """提供登录页面"""
        return render(request, "login.html")

    def post(self, request):
        """处理登录的数据"""
        # 获取参数
        user_name = request.POST.get("username")
        password = request.POST.get("pwd")
        remembered = request.POST.get("remembered")  # 记住用户名的参数

        # 参数校验
        if not all([user_name, password]):
            # 参数不完整
            return render(request, "login.html")

        # 登录业务逻辑处理
        # try:
        #     password = sha256(password)
        #     User.objects.get(username=user_name, password=password)
        # except User.DoesNotExist:
        #     return HttpResponse("用户名或密码错误")

        # 使用django的认证系统进行用户密码的校验
        user = authenticate(username=user_name, password=password)
        if user is None:
            # 用户的登录信息有误
            return render(request, "login.html", {"errmsg": "用户名或密码错误!"})

        # 判断用户的激活状态
        if user.is_active is False:
            return render(request, "login.html", {"errmsg": "用户尚未激活!"})

        # 保存用户的登录状态
        # 使用django的login函数保存用户的session数据
        login(request, user)
        # 根据用户勾选的记住用户名选项,设置session数据的有效期(django帮助我们完成cookie有效期的设置)
        if remembered != "on":
            # 表示用户没有勾选
            request.session.set_expiry(0)  # 设置为临时会话
        else:
            # 表示用户勾选
            request.session.set_expiry(None)  # 采用django的默认设置有效期

        # 登录成功,
        # 判断页面url中是否有next参数,
        next = request.GET.get("next")
        # 如果有,则跳转到next的url
        if next:
            return redirect(next)
        else:
            # 如果没有,跳转到主页
            return redirect(reverse("goods:index"))

  这里我存的session为临时回话,如下图:

技术分享

 

退出登陆

使用django的认证系统提供的logout函数,清除session数据

在users中的urls中定义退出的请求路径
url(r‘^logout$‘, views.LogoutView.as_view(), name="logout"),

  在users中的views中定义退出的请求处理函数

from django.contrib.auth import authenticate, login, logout

class LogoutView(View):
    """退出"""
    def get(self, request):
        # 使用django的认证系统提供的logout函数,清除session数据
        logout(request)
        # 跳转到主页
        return redirect(reverse("goods:index"))

  在应用模块中的users中的uels中定义一个用户只有登陆过认证才可以访问自己的地址信息的请求路径:

   url(r‘^address$‘, views.AddressView.as_view(), name="address"),  

在配置文件中配置用户没有通过认证的登陆网址

# 登录的网址
LOGIN_URL = ‘/users/login‘

  

定义请求的处理函数;

  

 

用户登陆

标签:self   post   文件   obj   pos   com   dex   有效期   判断   

原文地址:http://www.cnblogs.com/crazymagic/p/7693516.html

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