django-auth组件的注册登录

Posted .Tang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django-auth组件的注册登录相关的知识,希望对你有一定的参考价值。

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,]) # 判断用户是否有权限列表中的某个权限
        ‘‘‘

 

以上是关于django-auth组件的注册登录的主要内容,如果未能解决你的问题,请参考以下文章

django-auth组件的权限管理

如何利用Django-auth做用户认证

带有固定按钮的片段

碎片一个接一个

PHP注册与登录用户注册

片段无法转换为 java.util.concurrent.Executor 错误