Day8-课堂笔记-Django8

用户权限
当我们修改用户权限模型时
在djg1->settings:末尾添加

# 自动用户模型为我们自己创建的MyUser模型
AUTH_USER_MODEL='permission.MyUser'

permission->models.py:

from django.contrib.auth.models import User,Group,Permission, AbstractUser
from django.db import models

class MyUser(AbstractUser):
    '''
    自定义Django自带的User模型
    '''
    is_delete=models.BooleanField(default=0,verbose_name='是否删除')


    class Meta:
        # ('描述','权限')
        permissions=(
            ('change_myuser_username','修改用户名'),
            ('change_myuser_password','修改密码')
        )

permission->urls:


urlpatterns=[
    # 创建admin用户
    url(r'^create_user/',views.create_user,name='create_user'),
    # 给用户添加权限
    url(r'^add_user_permission/',views.add_user_permission,name='add_user_permission'),
    # 给组分配权限
    url(r'^add_group_permission/',views.add_group_permission,name='add_group_permission'),
    # 给admin用户分配审核组
    url(r'^add_user_group/',views.add_user_group,name='add_user_group'),
    # 查询某个用户的权限列表
    url(r'^user_permission/',views.user_permission,name='user_permission'),
    url(r'^index/',views.index,name='index')

]

permission->views:


from django.contrib.auth.decorators import permission_required
from django.contrib.auth.models import Permission,Group
from django.http import HttpResponse
from django.shortcuts import render

from permission.models import MyUser


def create_user(requset):
    if requset.method=='GET':
        MyUser.objects.create_user(username='admin',
                                   password='123456')
        return HttpResponse('用户创建成功')


def add_user_permission(request):
    if request.method=='GET':
        # 给姓名叫admin的用户添加修改用户名的权限
        user=MyUser.objects.filter(username='admin').first()
        per=Permission.objects.filter(codename='change_myuser_password').first()
        # 添加权限
        user.user_permissions.add(per)
        # 删除权限
        user.user_permissions.remove(per)
        # 清空权限
        user.user_permissions.clear()

        return HttpResponse('添加用户权限成功')


def add_group_permission(request):
    if request.method=='GET':
        # 创建审核组,并分配查看和编辑
        group=Group.objects.filter(name='审查组').first()
        if group:
            per_list=['change_myuser',
                      'delete_myuser',
                      'change_myuser_username',
                      'change_myuser_password']
            # 获取四个权限
            pers=Permission.objects.filter(codename__in=per_list)
            for per in pers:
                # 添加组和权限之间的关系
                group.permissions.add(per)
                # 删除组和权限之间的关系
                # group.permissions.remove(per)
                return HttpResponse('给组添加权限成功')
        else:
            # 添加审查组
            Group.objects.create(name='审查组')
            return HttpResponse('没有审核组,正在创建')


def add_user_group(request):
    if request.method=='GET':
        # 获取admin用户
        user=MyUser.objects.filter(username='admin').first()
        # 获取审查组
        group=Group.objects.filter(name='审查组').first()
        user.groups.add(group)
        return HttpResponse('分配组成功')


def user_permission(request):
    if request.method=='GET':
        user=MyUser.objects.filter(username='admin').first()
        permission=[]
        # 1.用户和权限的关联关系
        per1s=user.user_permissions.all()
        for per1 in per1s:
            permission.append(per1.codename)
        # 2.用户和组的关联关系
        groups=user.groups.all()
        for group in groups:
            # 组和权限的关联关系
            per2s=group.permissions.all()
            for per2 in per2s:
                permission.append(per2.codename)
        # 3.通过用户查询所有的权限
        pers_all=user.get_all_permissions()
        # 4.通过用户获取组权限
        pers_group=user.get_group_permissions()
        return HttpResponse(permission)


@permission_required('permission.change_myuser_username')
def index(request):
    if request.method=='GET':
        # change_myuser_username
        return render(request, 'index.html')

utils->middleware:

from django.utils.deprecation import MiddlewareMixin

from permission.models import MyUser


class UserAuthMiddleWare(MiddlewareMixin):

    def process_request(self, request):
        user = MyUser.objects.get(username='admin')
        request.user = user
        return None

templates->index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
{{user}}
{# perms全局变量,可以存储当前用户的所有权限,通过{{perms.应用名}}可以打印出当前用户的所有权限 #}
{{perms.permission}}
{% if perms.permission.add_myuser  %}
<p>添加用户</p>
{% endif %}

{% if perms.permission.change_myuser %}
<p>修改用户</p>
{% endif %}

{% if perms.permission.delete_myuser %}
<p>删除用户</p>
{% endif %}

{% if perms.permission.change_myuser_username %}
<p>修改用户名</p>
{% endif %}

{% if perms.permission.change_myuser_password %}
<p>修改密码</p>
{% endif %}

</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容