Python第47天 权限数据需求分析

文章目录

2019-2-14 14:25:20

数据需求分析

  • 根据实际情况,将菜单、权限、岗位、用户进行匹配关联(后台管理里面做好)
  • 用户登录后,需要获取这个用户有哪些权限
  • 将用户信息进行提取,并将该信息重新整理
  • 根据整理后的信息保存起来发给template,进行匹配对应的一级菜单、二级菜单、权限等

-----------------------------------------------------------------------
#init_menu初始化用户数据
from host import models
class InitMenu(object):
    def initMenu(self,username):
        obj = models.UserInfo.objects.filter(username=username).first()
        menu_list = []
        one_menu = {}
        for i in models.Menu.objects.all():
            menu_list.append(i.title)
            one_menu[i.title] = {}
        # print('menu_list----->>>', one_menu)
        if obj:
            a = obj.roles.all().first().permissions.all()
            # print(a)
            for i in a:

                for j in range(0, len(menu_list)):
                    try:
                        if i.menu.title == menu_list[j]:
                            # one_menu['主机管理']={}
                            one_menu[menu_list[j]][i.title] = i.url
                    except KeyError:
                        print('5555555')
        print('menu_list----->>>', one_menu)
        return one_menu
#数据结果类似:
menu_list-- -- - >>> {
    '用户管理': {
        '显示用户': '/user/',
        '增加用户': '/user/add/',
        '删除用户': '/user/delete',
        '更新用户': '/user/update/(//d+)/'
    },
    'API管理': {
        'salt': '/salt/'
    },
    '主机管理': {
        '新增主机': '/host/add/',
        '更新主机': '/host/update/(//d+)/',
        '删除主机': '/host/delete',
        '显示主机': '/host/hostpage/'
    },
    '权限管理': {}
}

-----------------------------------------------------------------------
#views.py获取用户信息
from builtins import locals
from django.shortcuts import render,HttpResponse,redirect
from host import models
from django.views import View
from utils import form_class,init_menu
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.utils.decorators import method_decorator
from django.contrib.auth.hashers import make_password, check_password
import hashlib
class login(View):
    def get(self,request):
        form = form_class.UserForm()
        return render(request, 'login.html',locals())
    def post(self,request):
        form = form_class.UserForm(request.POST)
        #判断输入数据是否存在
        if form.is_valid():
            user = form.cleaned_data['user']
            pwd = form.cleaned_data['pwd']
            # pwd = make_password(form.cleaned_data.get('pwd'),'pbkdf2_sha256')
            # print(pwd)
            obj = models.UserInfo.objects.filter(username=user).first()
            one_menu=init_menu.InitMenu().initMenu(user)
            #print('全体散开',one_menu)
           
            #判断用户名是否存在
            if obj:
                #判断密码是否对应正确,使用django自带加密算法功能
                if  check_password(pwd,obj.password):
                    obj1 = models.UserInfo.objects.filter(username=user).first().roles.all()
                    menu_list = []
                    permission_list =[]
                    obj2 = models.Menu.objects.all()
                    for i in obj2:
                        if i.title not in menu_list:
                            menu_list.append(i.title)
                    request.session['menu_list'] = menu_list
                    for i in obj1:
                        for j in i.permissions.all():
                            permission_list.append(j.url)
                            
                    request.session['permission_list']=permission_list
                    request.session['one_menu']=one_menu
                    

                    return render(request, 'hostpage.html', locals())
                else:
                    #密码不正确
                    error_msg = '用户名或密码错误!'
                    return render(request, 'login.html', locals())
            else:
                # 密码不正确
                error_msg = '用户名或密码错误!'
                return render(request,'login.html',locals())
        #如果输入数据不存在
        else:
            form = form_class.UserForm(request.POST)
            return render(request, 'login.html',locals())

给TA打赏
共{{data.count}}人
人已打赏
开发

Sublime_VNC安装

2023-9-11 18:21:06

开发

Python第19天 memcached启动脚本v2

2023-9-11 18:33:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索