日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

django admin 根據(jù)choice字段選擇的不同來顯示不同的頁面方式

瀏覽:178日期:2024-10-08 10:48:23

我就廢話不多說了,大家還是直接看代碼吧!

一、舉例

tip/tip.js var react = function () { if (django.jQuery(’#id_tiptype’).val() == ’content’) { django.jQuery(’#id_content’).parent().parent().show(500); django.jQuery(’#id_image’).parent().parent().hide(500); django.jQuery(’#id_cropping’).parent().parent().hide(500); } else { django.jQuery(’#id_content’).parent().parent().hide(500); django.jQuery(’#id_image’).parent().parent().show(500); django.jQuery(’#id_cropping’).parent().parent().show(500); } }; #當選擇的類型改變的時候觸發(fā)react函數(shù) django.jQuery(function () { react(); django.jQuery(’#id_tiptype’).on(’change’, react); });

二、admin.py

# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.contrib import adminfrom image_cropping import ImageCroppingMixinfrom salmonella.admin import SalmonellaMixinfrom tip.models import Tip,TipTag@admin.register(Tip)class TipAdmin(ImageCroppingMixin, SalmonellaMixin, admin.ModelAdmin): # search_fields = (’tiptype’,) list_filter = (’enabled’,) list_display = (’tiptype’, ’enabled’, ’get_tag’,’image’) salmonella_fields = (’tags’, ) # fields = (’tiptype’, ’enabled’,’tags’,’image’) def get_tag(self, obj): print(obj.tags.all()) if obj.tags.all(): tag_list = [i.name for i in obj.tags.all()] return ’,’.join(tag_list) else: return ’’ get_tag.short_description = ’小貼士標簽’ class Media(): js = (’tip/tip.js’,)@admin.register(TipTag)class TiptagAdmin(admin.ModelAdmin): search_fields = (’name’, ) list_display = ('name', )

補充知識:Django之自定義用戶權限(自定義RBAC組件)

RBAC組件

rbac 組件一般我們用于權限的校驗,幫助我們更好的管理用戶認證信息,不同的用戶權限不同,訪問的界面展示也不相同

什么是權限: 一個含有正則表達式的 url

基于 RBAC 設計表關系:

django admin 根據(jù)choice字段選擇的不同來顯示不同的頁面方式

class User(models.Model): class Meta: # 此處設置 admin 中顯示名稱 verbose_name = verbose_name_plural = ’用戶表’ name = models.CharField(max_length=32) pwd = models.CharField(max_length=32) roles = models.ManyToManyField(to=’Role’) def __str__(self): return self.nameclass Role(models.Model): class Meta: verbose_name = verbose_name_plural = ’職位表’ title = models.CharField(max_length=32) permissions = models.ManyToManyField(to=’Permission’) def __str__(self): return self.titleclass Permission(models.Model): class Meta: verbose_name = verbose_name_plural = ’權限表’ title = models.CharField(max_length=32) url = models.CharField(max_length=32) menu=models.ForeignKey('Menu',on_delete=models.CASCADE,null=True) def __str__(self): return self.title class Menu(models.Model): class Meta: verbose_name = verbose_name_plural = ’菜單表’ title = models.CharField(max_length=32, verbose_name=’菜單’) icon = models.CharField(max_length=32, verbose_name=’圖標’, null=True, blank=True)

添加需要的權限信息

任何利用中間件和自定義的模塊 傳輸和獲取 當前用戶的權限信息

# 通過自定義 middleware 模塊在 setting 中加入,引入中間件from django.utils.deprecation import MiddlewareMixinfrom django.shortcuts import HttpResponse, redirectimport reclass PermissionMiddleWare(MiddlewareMixin): def process_request(self, request): current_path = request.path # 設置白名單 for reg in [’/login/’, ’/admin/*’]: ret = re.search(reg, current_path) if ret:return None # 校驗是否登錄 user_id = request.session.get(’user_id’) if not user_id: return redirect(’/login/’) # 校驗權限 permission_list = request.session.get('permission_list') for reg in permission_list: reg = '^%s$' % reg ret = re.search(reg, current_path) if ret:return None return HttpResponse('無權訪問!')

rbac 自定義模塊

from app1.models import *def initial_sesson(user, request): ''' 功能:將當前登錄人的所有權限錄入 session 中 :param user:當前登錄人 :param request: :return: ''' # 查詢當前登錄人的所有權限列表 permissions = Role.objects.filter(user=user).values(’permissions__url’) print(’roles’, permissions) permissions_list = [] for item in permissions: permissions_list.append(item[’permissions__url’]) # 將當前登錄人的權限列表注入 session 中 request.session[’permission_list’] = permissions_list

django admin 根據(jù)choice字段選擇的不同來顯示不同的頁面方式

動態(tài)顯示菜單權限

動態(tài)獲取顯示菜單,注意本次顯示是后臺操作

需要獲取當前用戶的權限信息,獲取 url 和 是否為菜單,以及所帶的 icon 圖標。因為設計到傳值的問題,于是我們產(chǎn)生了自定過濾器。

首先自定過濾器

# web.py 文件中from django.utils.safestring import mark_safefrom django.template import Libraryimport reregister =Library()@register.inclusion_tag('rbac/menu.html')# 將當前函數(shù)的 permission_menu_dict 傳給 rbac 的 menu.htmldef get_menu_styles(request): ''' 自定義過濾器 :param request:傳入當前用戶菜單信息 :return: ''' permission_menu_dict = request.session.get('permission_menu_dict') print('permission_menu_dict',permission_menu_dict) return {'permission_menu_dict':permission_menu_dict}

在 menu.html 中書寫

# menu.html<div class='multi-menu'>{% for item in permission_menu_dict.values %}<div class='item'><div class='title'><i class='{{ item.menu_icon }}'></i>{{ item.menu_title }}</div><div class='body'>{% for foo in item.children %}<a href='http://m.b3g6.com/bcjs/{{ foo.url }}' rel='external nofollow' >{{ foo.title }}</a>{% endfor %}</div></div>{% endfor %}</div>

使用自定義的組件

<div class='left-menu'><div class='menu-body'>{% load web %}{% get_menu_styles request %}</div></div>

整體樣圖

django admin 根據(jù)choice字段選擇的不同來顯示不同的頁面方式

以上這篇django admin 根據(jù)choice字段選擇的不同來顯示不同的頁面方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩欧美一区二区三区在线观看| 免费日韩av| 日韩精品久久久久久久软件91| 午夜久久影院| 最新日韩av| 免费欧美日韩| 每日更新成人在线视频| 美美哒免费高清在线观看视频一区二区| 999国产精品| 爽好多水快深点欧美视频| 99成人在线| 中文国产一区| 日韩精品亚洲aⅴ在线影院| 日韩不卡在线观看日韩不卡视频| 亚洲精品美女91| 久久一区亚洲| 精品一区在线| 日韩和欧美的一区| 国产一区国产二区国产三区| 国产尤物精品| 91成人精品在线| 国产一区丝袜| 欧美精品一线| 国产精品2区| 好吊一区二区三区| 奇米色欧美一区二区三区| 久久电影tv| 亚洲一区成人| 国产中文欧美日韩在线| 免费精品视频| 免费观看亚洲天堂| 国产精品嫩草99av在线| 国产精品jk白丝蜜臀av小说| 欧美91精品| 国产美女精品视频免费播放软件| www.九色在线| 亚洲免费中文| 精品一区二区三区中文字幕在线| av高清一区| 日韩一区欧美二区| 国产精品成人自拍| 五月天久久777| 国产欧美自拍| 婷婷丁香综合| 日韩av中文字幕一区二区三区| 色综合五月天| 麻豆亚洲精品| 欧美在线看片| 久久中文视频| 日本伊人久久| 国产一区国产二区国产三区 | 欧美性www| 欧美不卡高清一区二区三区| 黄色不卡一区| 免费在线日韩av| 欧美日韩一二三四| 精品国产a一区二区三区v免费| 99国产精品私拍| 国产亚洲字幕| 亚洲欧美日韩精品一区二区| 久久一区欧美| 偷拍亚洲精品| 五月天久久久| 日韩精品视频网站| 久久久精品五月天| 久久精品国产亚洲aⅴ| 99国产精品私拍| 捆绑调教美女网站视频一区| 亚洲日产国产精品| 免费在线小视频| 国产欧美一区二区三区国产幕精品| 欧美 日韩 国产一区二区在线视频 | 国产精品毛片视频| 欧洲激情综合| 群体交乱之放荡娇妻一区二区| 国产三级精品三级在线观看国产| 蜜臀久久99精品久久久画质超高清 | 青青久久av| 日韩精品中文字幕第1页| 午夜精品影视国产一区在线麻豆| 亚洲福利久久| 日本韩国欧美超级黄在线观看| 欧美久久一区二区三区| 日本一区福利在线| 婷婷综合成人| 日韩和欧美一区二区三区| 亚洲欧洲专区| 日本国产欧美| 欧美日韩一区二区三区四区在线观看 | 天使萌一区二区三区免费观看| 日韩免费久久| 丰满少妇一区| 免费久久99精品国产| 午夜视频精品| 中文国产一区| 中文精品电影| 日本在线成人| 国产美女久久| 黄色欧美在线| 九九精品调教| 在线视频观看日韩| 欧美在线亚洲综合一区| 国产精品嫩草99av在线| 男女男精品网站| 日本麻豆一区二区三区视频| 日韩高清电影免费| 久久精品国产精品亚洲毛片| 久久不卡国产精品一区二区| 国产精品99精品一区二区三区∴| 国产精品麻豆成人av电影艾秋 | 欧美日韩少妇| 中文字幕成人| 国产伦精品一区二区三区视频 | 亚洲综合色婷婷在线观看| 亚洲精一区二区三区| 99国产精品视频免费观看一公开 | 中文字幕人成乱码在线观看| 久久男女视频| 亚洲欧美高清| 日本v片在线高清不卡在线观看| 国产精品调教视频| 亚洲成av在线| 亚洲天堂av资源在线观看| 久久精品 人人爱| 麻豆网站免费在线观看| 免费观看久久av| 1024精品久久久久久久久| 免费人成黄页网站在线一区二区 | 日韩国产一区二| 毛片不卡一区二区| 欧美日韩18| 给我免费播放日韩视频| 久久一级电影| 日韩欧美精品一区二区综合视频| 久久精品国产久精国产爱| 久久精品国产亚洲夜色av网站| 亚洲天堂av资源在线观看| 久久香蕉精品香蕉| 免费日韩视频| 成人黄色av| 色天使综合视频| 三级在线观看一区二区| 丰满少妇一区| 在线看片日韩| 日本综合字幕| 亚洲青青久久| 成人免费一区| 亚洲精品婷婷| 国产日韩电影| 日本成人中文字幕| 日韩精品电影| 日韩精品欧美大片| 亚洲v在线看| 国产日韩欧美三级| 亚洲综合国产| 老牛国内精品亚洲成av人片| 久久国产免费| 捆绑调教美女网站视频一区| 欧美资源在线| 日韩精品诱惑一区?区三区| 久热精品在线| 国产999精品在线观看| 免费久久99精品国产| 精品久久一区| 亚洲在线久久| 亚洲www免费| 美女久久精品| 免费久久精品视频| 日韩欧美在线中字| 国产私拍福利精品视频二区| 国内不卡的一区二区三区中文字幕| 日韩中文av| 亚洲免费中文| re久久精品视频| 日韩av在线中文字幕| 国产精品久久久免费| 亚洲资源在线| 亚洲欧美视频| 999精品一区| 日韩av福利| 国际精品欧美精品| 久久激情五月激情| 五月国产精品| 日av在线不卡| 欧美69视频| 国产精品蜜芽在线观看| 国产精品99久久免费观看| 亚洲精品成人一区| 国产偷自视频区视频一区二区| 亚洲二区在线| 欧美aa在线观看| 久久中文在线| 国产日韩免费| 青青草精品视频| 婷婷五月色综合香五月| 久久高清一区| 日韩视频一区二区三区在线播放免费观看 | 韩国三级一区| 美日韩一区二区三区| 欧美一区影院|