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

原文地址:https://www.cnblogs.com/tangpg/p/9074418.html

时间: 2024-08-11 13:51:53

django-auth组件的注册登录的相关文章

Django Auth组件

Auth组件 Author组件是Django自带的认证系统,包括登录校验,用户信息数据库表,以及修改用户权限,用户注销.给用户增加sesion等一切认证功能 导入auth模块 from django.contrib import auth 用户信息 在django项目创建开时,运行python manage.py migrations 和 python manage.py mirate 两个命令后django会自动创建django本身需要的数据库表和你自定义创建的数据库表,而Auth组件中的au

Django Form组件实例:登录界面[Form表单提交,Ajax提交]

"""本例中使用Form和Ajax进行了数据提交,Form提交有一个问题,就是输入错误的数据,刷新之后原有的数据会丢失.注意到Form组件可以生成HTML标签,将Form生成的对象传到前端,就可以保留原有的内容,具体见下文:""" 1 from django.shortcuts import * 2 from app02 import models 3 import json 4 5 # Create your views here. 6 def

Django auth组件拓展 关联外部信息---------------------------- Profile 模式

from django.db import models   from django.contrib.auth.models import User   GENDER_CHOICES = (                                      ('M', '男'),                                       ('F', '女'),                                       )   class UserPro

Django - 基于forms组件和Ajax实现注册登录 - FileField字段 - Media配置

一.基于forms组件的注册页面设计 点击头像==点击input 头像预览: 修改  获取用户选中的文件对象:获取文件对象的路径:修改img标签的src属性,让src=文件对象路径. register.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link

Django框架-Auth组件

Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统,此时我们需要实现包括用户注册,用户登录,用户认证,注销,修改密码等功能,这真是一个麻烦的事情. django作为一个完美主义者的终极框架,当然也会想到用户的这些疼点,因此它内置了强大的用户认证系统--auth,它默认使用auth_user表来存储用户数据. auth模块 auth本质就是一个django的app,里面也有views,models等. from django.contrib import a

django第13天(auth组件,forms组件)

django第13天(auth组件,forms组件) auth组件 -auth组件 -auth是什么? -django内置的用户认证系统,可以快速的实现,登录,注销,修改密码.... -怎么用? -(1)先创建超级用户: -python3 manage.py createsuperuser -输入用户名,邮箱(可以不输入),密码,敲回车,这样就创建出一个超级用户 -也就是在auth_user这个表中插入了一条数据(密码是加密的,所以我不能手动插入) -(2)验证用户: -from django.

Django重要组件(Auth模块)

Django重要组件(Auth模块) 一.auth模块介绍 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth,它默认使用 auth_user 表来存储用户数据. 二.auth模块常用方法 from django.contrib i

巨蟒django之CRM1 需求分析&amp;&amp;表结构设计&amp;&amp;注册登录验证

1.需求分析 1.项目 (1)业务 (2)权限的管理 2.CRM customer relationship management 客户关系管理系统 3.谁来使用CRM? 销售&&班主任&&讲师&&助教 4.项目的需求分析 (1)注册 (2)登录 (3)销售 1.客户信息管理 增加 编辑 展示 客户信息(删除一般不用它做,后台管理员来做,为了信息安全) 2.跟进信息管理 增加 编辑 展示 跟进信息 3.报名信息的管理 增加 编辑 展示 报名信息 4.缴费记录

Laravel 5.3 使用内置的 Auth 组件实现多用户认证功能

https://blog.csdn.net/kevinbai_cn/article/details/54341779 概述 在开发中,我们经常会遇到多种类型的用户的认证问题,比如后台的管理员和前台的普通用户.Laravel 5.3 内置的 Auth 组件已经能很好的满足这项需求,下面大概记录下使用方法. 另外,后台页面常常需要登录才能访问,为了完成类似的功能,大家一般都习惯创建新的中间件来实现.但是 Auth 组件已经存在类似的中间件,我们可以在已有的基础上进行完善,具体请看 后台认证 -> 登