zoukankan      html  css  js  c++  java
  • django-auth组件的注册,登录,登出,及验证是否已经登入。使用login的属性

    1.注册:

    1.创建User(django自带的用户model)的form对象

    定义form验证返回的错误提示信息

    error_msg = {
        'username': {'required': '用户名不能为空', 'max_length': '最大20','min_length': '至少6'},
        'password': {'required': '用户名密码不能为空', 'max_length': '最大20','min_length': '至少6'},
    }

    django,auth组件自带的用户model User 拥有username和password两个字段

    
    
    from django.contrib.auth.models import User

    class
    AuthRegisterForm(forms.Form): username = forms.CharField(label='用户名', min_length=6, max_length=20, required=True, error_messages=error_msg['username']) password = forms.CharField(label='密码', min_length=6, max_length=20, required=True, error_messages=error_msg['password']) def clean_username(self): username = self.cleaned_data["username"] users = User.objects.filter(username=username) print username print 'qeqwe' if users: raise forms.ValidationError("用户名已经存在") return username

    2.view视图

        def post(self, request):
            forms = AuthRegisterForm(request.POST, request.FILES)
            print forms.errors
            if forms.is_valid():
                user = User.objects.create_user(**forms.clean()) # 使用的不是普通的create。  修改密码:set_password  都是自动加密 sha2
            user.set_password('newpassword')
    return HttpResponse('welcome haha...') return render(request, 'register.html', locals())

    2.登录:

    class AuthLogin(View):
        """ 通过auth登录 """
        def get(self, request):
            return render(request, 'login11.html')
    
        def post(self, request):
            username = request.POST.get("username")
            password = request.POST.get("password")
            print request.user
            # 使用auth组件的authenticate验证登录,成功返回一个用户
            user = authenticate(username=username, password=password)
            if user:
                # 这个就是使用auth组件的登录]
                if user.is_active: # 判断用户是否被激活
                    login(request, user)
                    # 如果调用login方法以后,
                    # request对象就会激活user属性,这个属性不管登录或者未登录都是存在
                    print request.user
                    return HttpResponse("ok")
                else:
                    message = "用户不存在"
                    return render(request, 'login11.html', locals())
            else:
                message = u"用户或密码出错"
                print message
            return render(request, 'login11.html', locals())

    3.注销:

    html

    <a href="{% url 'work_include:auth_logout' %}">注销</a>

    view

    class LoginOut(View):
        """ 登出 """
        def get(self, request):
            logout(request) # 会清除 cookie,seesion
            return HttpResponse("注销成功")

    4.验证其他页面是否登陆

    class OtherPageAuth(LoginRequiredMixin, View):
        """
            用户是否已经验证
            from django.contrib.auth.mixins import LoginRequiredMixin
            指定局部的跳转url: login_url = "/work/auth_login"
            全局: settings中 LOGIN_URL = '/work/auth_login'
        """
        login_url = "/work/auth_login" # 没登录跳转到登陆界面,登录则正常执行
        def get(self, request):
            print request.user
            return render(request, 'logok.html', locals())

    ps: 使用login方法登录,会激活request的user属性,

       激活前request.user为AnonymousUser

       激活后request.user为 username,具有多个子属性

            '''
            request.user.username # 用户名
            request.user.email #邮箱
            request.user.groups #多对多的组
            request.user.user_permissions # 多对多的用户权限
            request.user.is_staff # 是否是admin的管理员
            request.user.is_active # 是否激活,判断该用户是否可用
            request.user.is_superuser #是否是超级用户
            request.user.last_login # 上次登录时间
            request.user.is_authenticated # 是否验证通过
            request.user.is_anonymous # 是否是匿名用户
            request.user.set_password # 设置密码,传入原生密码
            request.user.check_password # 检查密码
            request.user.has_perm #判断用户是否拥有某个权限
            request.user.has_perms([perms,]) # 判断用户是否有权限列表中的某个权限
            '''

     比如判断是否通过验证,通过验证就不再显示登陆注册的样式了

    {% if not user.is_authenticated %}
        <a href="{% url 'auth:login' %}">登录</a><span> /</span>
        <a href="{% url 'auth:register' %}">注册</a>
    {% else %}
        <a href="#" class="">{{ user.username }}</a>
    {% endif %}
  • 相关阅读:
    并发下常见的加锁及锁的PHP具体实现代码(转)
    Yii2.0高级框架数据库增删改查的一些操作(转)
    MySQL主从数据库同步延迟问题解决(转)
    Redis安装及主从配置(转)
    Sphinx 之 Coreseek、Sphinx-for-chinaese、Sphinx+Scws 评测
    Sphinx中文分词安装配置及API调用
    php实现二分查找法
    PHP设计模式_适配器模式
    PHP设计模式_注册树模式
    PHP设计模式_工厂模式
  • 原文地址:https://www.cnblogs.com/tangpg/p/9074418.html
Copyright © 2011-2022 走看看