Django的auth模块

首先我们先来复习一下路由别名如何使用,这里仅仅复习一下二级路由的路由别名该如何使用

·1、在视图函数中使用二级路由别名,需要加上app的名称+“:”+ “路由别名”

from django.urls import reverse

return redirect(reverse("app1:auth_index_view"))

  

2、在html文件中使用二级路由的别名

<form action="{% url ‘app1:auth_login_view_name‘ %}" method="post" novalidate >
    {% csrf_token %}
    {{ obj.username.label_tag }}{{ obj.username }}
    <span>{{ obj.errors.username.0 }}</span>
    {{ obj.userpwd.label_tag }}{{ obj.userpwd }}
    <span>{{ obj.errors.userpwd.0 }}</span>
{#    <a href="{% url ‘app1:auth_login_view_name‘ %}">点我大</a>#}
    <input type="submit" value="提交">

</form>

  

下面我们正式进入auth模块的学习

1、首先需要导入两个模块

from django.contrib import auth

  

from django.contrib.auth.models import User
# 创建用户的模块

  

2、然后这里是auth模块的具体的使用的方法

def auth_login_view(request):
    method_type = request.method.lower()
    if method_type == "get":
        form_obj = my_new_forms()

        return render(request,"auth_login.html",{
            "obj":form_obj
        })
    else:
        username = request.POST.get("username")
        userpwd = request.POST.get("userpwd")
        user = auth.authenticate(username=username,password=userpwd)
        # 这里必须是user用其他的都不行,验证用户名和密码是否通过校验,如果通过则返回一个usr对象,如果不通过,则返回一个匿名用户对象

        if user:
            auth.login(request,user)
            # 把username这个信息封装到request.user中

            print(dir(user))

            from django.contrib.auth.models import User
            new_common_user = User.objects.create_user()
            # 创建普通用户

            new_super_user = User.objects.create_superuser()
            # 创建超级管理员用户

            error_create_user = User.objects.create()
            # 我们不用这个方法创建用户,这个方法创建的用户的密码不是加密的,一般也不能用

            user = User.objects.get(username="aaa")
            user.set_password()
            user.save()
            # 修改密码,这里需要保存才能生效

            user.check_password()
            # 用户需要修改密码的时候,首先先判断当前输入的密码对不对

            return redirect(reverse("app1:auth_index_view"))
        else:
            return redirect(reverse("app1:auth_login_view_name"))

  

3、auth模块还自带一个装饰器,用来判断用户是否登陆,也需要先导入一个模块

from django.contrib.auth.decorators import login_required
# 判断用户是否登陆的装饰器

  

@login_required
# django自带的装饰器,判断某个用户是否登陆
def auth_index_view(request):
    print(request.user.is_authenticated())
    # 判断某个用户是否登陆,如果是则返回true

    return render(request,"auth_index.html",{"name":request.user.username})

  

这里如果用户没有登陆成功,则页面需要跳转到某个页面,这个页面需要在settings中配置

# 如果没有登陆地登陆,默认跳转到哪个url
LOGIN_URL = "http://www.baidu.com"

  

4、auth模块的注销的方法

def logout(request):
    auth.logout(request)
    # auth.logout方法,删除cookies和seesion

    return redirect(reverse("app1:auth_login_view_name"))

  

另外,django默认的user表中只有有限的字段,如果我们想扩展其中的字段该怎么处理呢,这里我们有2种办法可以处理

方法1,新建一个表,一对一到user表中

# 1、新建一个表,一对一关联auth_user表
from django.contrib.auth.models import User
# 先把django自带的user这个表导入

class User_detail(models.Model):
    phone = models.CharField(max_length=11)
    usr_obj = models.OneToOneField(to=User)
    # 一对一关联到django自带的user表

  

方法2,使用继承的方法,这里需要注意,如果使用继承的方法,则django的数据库中就乜有auth_user表中了,所以上面的方法中如果用auth_user这个表,则只需要修改表明为我们的表名称

# 2、自己写一个类
from django.contrib.auth.models import User
from django.contrib.auth.models import AbstractBaseUser

class Userinfo(AbstractBaseUser):
    phone = models.CharField(max_length=11)
    addr = models.TextField()

# 如果我们使用继承的方式扩展内置的auth_user表,这个时候要在settings.py中配置默认用户做认证用的那张表
# AUTH_USER_MODEL = "app1.Userinfo"

  

原文地址:https://www.cnblogs.com/bainianminguo/p/9795471.html

时间: 2024-11-02 01:36:51

Django的auth模块的相关文章

Django之auth模块(用户认证)

auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中. 除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录 auth里的方法 首先导入模块 from django.contrib import auth 1 .authenticate()   提供了用户认证,即验证用户名以及密码是否正确,一般需要u

Django之auth模块(用户认证)登陆组件

auth模块简介 auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象, 而有了auth模块之后就可以很轻松的去验证用户的登录信息是否存在于数据库中. 除此之外,auth还对session做了一些封装,方便我们校验用户是否已登录 auth里的方法 如果想使用auth模块的方法,必须要先导入auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法

Django之Auth模块

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

Django之auth模块用户认证模块

一.Auth模块 1)auth模块是什么.登录后台使用的账号密码,则就是使用的auth模块创建的表 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统. 此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统--auth, 它默认使用 auth_user 表来存储用户数据. 2)auth模块的功能

Django 之 auth 模块

Django 内置一个 auth 模块,帮助用户实现注册.登录.注销以及修改密码等功能,帮助开发者省去了很多功夫. auth 模块 在创建模型时,Django内部会生成一个名为 auth_user 的数据表,用于存储认证的用户信息. auth 模块提供了一系列的方法,使用之前需要导入: from django.contrib import auth authenticate() 方法 提供用户认证功能,验证用户名和密码是否正确等.如验证成功,则返回一个 User 对象. from django.

Django对中间件的调用思想、csrf中间件详细介绍、Django settings源码剖析、Django的Auth模块

目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax csrf相关装饰器 在CBV上加csrf装饰器 Django settings源码剖析及模仿使用 Django settings源码剖析 查看内部配置文件 模仿使用 Auth模块 auth简介 auth模块常用方法 创建用户 校验用户名和密码 保存用户登录状态 判断当前用户是否登录 校验原密码 修改密

python之auth模块

django之auth模块 ''' 今天傻逼了,整理了很久的笔记,结果因为更新了navigate,忘记保存重启,内存清空,数据都丢了,所以我先把今天所学的知识,大体讲一下,周末再具体进行补充. ''' #auth模块主要就是围绕用户表,完成用户登录注册,修改密码,添加字段等作用的,可以加语法糖,全局,局部配置, #然后可以用auth模块可以对字段进行扩充,就是继承,再加个配置 ##下面是粗略的笔记,周六上午重新整理完 1.auth模块 用auth模块 你就用全套 不是自己写一部分 用别人一部分

CSRF与auth模块

目录 一.模拟实现中间件的编程思想 (一)impotlib模块 (二)实现功能的配置使用 二.跨站请求伪造CSRF (一)由来 (二)form表单的CSRF (三)ajax中的CSRF (1)通过data携带 (2)通过headers携带 (3)官网提供的文件(推荐用法) (四)CSRF相关的装饰器 (1)MTV模型中使用 (2)CBV模型中使用 三.Django中auth模块 (一)什么是auth模块 (二)常用方法 (1)创建用户 (2)校验用户 (3)登录保存 (4)是否登录 (5)检验密

扩展Django内置的auth模块代码示例

一,创建自定义User模型类.继承AbstractUser 方法1 新建一个表,表里面有手机号,邮箱,地址,一对一与User表进行关联 方法2 新定义一个类,继承类AbstractUser ( auth模块的User类也是继承此AbstractUser 类的) 说明:python 语法上,也是可以直接继承User类的 以下代码,我们扩展了两个字段,phone和addr 注意:settings.py中一定要指不使用内置的User表,而是使用新的UserInfo表 AUTH_USER_MODEL='