zoukankan      html  css  js  c++  java
  • 潭州课堂25班:Ph201805201 django框架 第十三课 自定义404页面,auth系统中的User模型,auth系统权限管理 (课堂笔记)

     当 DEBUG=True 时,django 内部的404报错信息,

    自带的报错信息,

    要自定义404信息,要先把 DEBUG=False ,

    之后要自定义4040页面,有两种方法,

      方法1,在创建404页面

    这样就配置完成,当访问不存在的页面时,跳转到自定义的404页面中,

     方法2,创建404.html文件后,写个视图函数渲染,传入 status=404 状态码,(可自定义403,500)

    之后在主 urls 文件中给这些配置路由,要在主 urls 文件中导入该 APP 的视图

    在该项目中的数据库中存放着 auth 的关系表,

    用户基本信息表:

    在 auth_user 表中可以查看到昨天创建 的 admin 用户

     

    其中,user 表,group 表,permlssion 表,是多对多的表关系,

     

    注册视图函数的写法:

    要在视图函数中导入 auth 模型,

    登录视图函数的写法:

     

    在 home 视图函数:

    在页岩显示用户名时,在 html 文件中直接接收 request.user

    退出登录视图函数:

    from django.shortcuts import render,redirect,reverse
    from django.http import HttpResponse
    from .forms import *        # 导入 form 文件
    
    #     导入 auth 系统的模型,表        用户,  组,    权限
    from  django.contrib.auth.models import User,Group,Permission
    
    #     导入 auth 系统的模型,表     登录,    保持登录, 退出
    from django.contrib.auth import authenticate, login,    logout
    
    
    # Create your views here.
    
    def home(request):
        return render(request,'form_test/home.html' )
    
    
    def login_test(request):
        # 登录
        if request.method =='POST':
            form = LoginForm(request.POST)                #    拿到用户输入信息
            if form.is_valid():                             #  判断合法性
                username = form.cleaned_data.get('username')
                password = form.cleaned_data.get('password')
                # auth 验证用户登录
                user = authenticate(username=username,password=password)
             
                if user:                                        #  登录成功
                    login(request,user)                        #   保持登录
                    return redirect(reverse('home'))
                else:
                    form = RegisterFrom()
                    return render(request,'form_test/register.html',{'form':form})
        else:
            form = LoginForm()                                               #    实例化 form 表单
            return render(request,'form_test/login.html',{'form':form})
    
    
    def register(request):
        # 注册信息
        if request.method =='POST':
            form = RegisterFrom(request.POST)                                # 从 form 表单中拿数据
            if form.is_valid():                                              # 判断数据合不合法
                username = form.cleaned_data.get('username')
                password = form.cleaned_data.get('password')
                password_repeat = form.cleaned_data.get('password_repeat')
                email = form.cleaned_data.get('emil')
                if password == password_repeat:                              # 如果两位再次输入的密码相同,
                    #  存入 auth 模型的表中
                    User.objects.create_user(username=username,
                                             password=password,
                                             email=email)
                    return redirect(reverse('login_test'))                  # 注册成功 后跳转
    
                else:return redirect(reverse('register'))                   # 失败,重新注册
            else:return redirect(reverse('register'))                       # 如果不合法,重新注册
        else:
            form = RegisterFrom()
            return render(request,'form_test/register.html',{'form':form})
    
    
    def logout_test(request):
        logout(request)
        return redirect(reverse('home'))
    

      

    权限管理:

    实例的实现:只有在登录后才能进入博客主页,

    1, 在主目录的配置文件中添加一路径,如果没有登录,就跳转到这个指定目录下,

    2, 给博客主页 的视图函数添加权限,装饰器,

     

    在地址栏中可以看到 next 的值,就是博客主页的 url,

     

    在登录视图函数中打印出 next 的值,:

    用户对数据的增,删,改,查,的管理权限:

    查看数据库中的每一张表都有这四个功能,

    在视图中的增删改查添加  permission_required  权限管理 装饰器,

     

    视图哈数:

     

     

     添加权限后的视图,没有登录,级普通用户,是不能访问的,

    这里可以对相关表的修改,进行用户权限的管理,

    如: 在某个视图中导入 auth 的相关表,对一个用户做修改密码的操作

     写个视图函数: 这里对 gdwz922922 用户进行修改密码的操作,

     

    配置下路由:

     

    访问该视图后就可以成功修改密码,

     

    同样方法可以对这个用户进行用户权限的修改,(多对多关系表)

    用户组,给一个组开通相关权限,把需要该权限的用户统一放到这个组里,实现批量修改用户权限的功能,

    1,写个创建组的视图函数:

    2,地址样中访问这个视图

     

    3,给这个组添加权限,

    4,地址样中访问这个视图

    5,往组里加人

     这样就完成了从创建组到用户分组的过程

  • 相关阅读:
    生成一个签章(用java.awt画一个签章) 并添加到pdf 公章处
    数字转字符串的处理
    Mybatis .xml编译常识
    聚合查询|F查询Q查询
    表查询
    FBV与CBV
    伪静态|虚拟环境|form表单
    数据增删改查|路由层
    django基础 链接数据库|静态文件配置
    WEB框架初学
  • 原文地址:https://www.cnblogs.com/gdwz922/p/9992990.html
Copyright © 2011-2022 走看看