Django自定义用户2018-09-19

2018-09-19  本文已影响0人  LPP27149

1. 自定义用模型


# 声明自定义模型为MyUser
AUTH_USER_MODEL = 'app.MyUser'

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

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

def add_user_permission(request):
    if request.method == 'GET':
        # 给admin用户添加修改用户名的权限
        user = MyUser.objects.filter(username='admin').first()
        per = Permission.objects.filter(codename='change_myuser_username').first()
        # 添加权限
        user.user_permissions.add(per)
        # 删除权限
        # user.user_permissions.add(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_username',
                            'change_myuser_password',
                            'change_myuser',
                            'delete_myuser'
                            ]
                pers = Permission.objects.filter(codename__in=per_list)
                for per in pers:
                    # 添加组和权限之间的关系
                    group.permissions.add(per)
                    # 添加组和权限之间的关系
                    # group.permissions.remove(per)
                return HttpResponse(0)
    
            else:
                Group.objects.create(name='审核组')
                return HttpResponse('审核组不存在, 请先创建')

 def add_user_group(request):
    if request.method == 'GET':
        user = MyUser.objects.filter(username='admin').first()
        group = Group.objects.filter(name='审核组').first()
        # 给admin用户分配组
        user.groups.add(group)

        return HttpResponse('分配成功')

def user_permission(request):
    if request.method == 'GET':
        user = MyUser.objects.filter(username='admin').first()
        # 1. 直接从用户和权限关联表查
        p1 = user.user_permissions.all().values('codename')
        # 2. 从组和权限关联表查询
        p2 = user.groups.first().permissions.all().values('codename')
        # 获取user的所有权限
        user.get_all_permissions()
        # 获取user所在组的权限
        user.get_group_permissions()

        return HttpResponse(p1) 

@permission_required('app.change_myuser_username')
def index(request):
    if request.method == 'GET':

        return render(request, 'index.html')

tips:在settings中添加LOGIN_URL= 验证失败URL,会在验证失败时跳转验证失败页面

上一篇 下一篇

猜你喜欢

热点阅读