python菜单设计_python django 数据库树形菜单的设计
# view文件
from django.shortcuts import render
from app.models import Menu
# Create your views here.
from django.http import JsonResponse
def index(request):
data = get_menu_tree()
return JsonResponse({"list":data})
# 从数据库获取菜单树
def get_menu_tree():
tree = []
menus = Menu.objects.filter(parent=None)
for menu in menus:
menu_data = {
"label":menu.name,
"children":[]
}
childs = Menu.objects.filter(parent=menu)
if childs:
menu_data["children"] = get_child_menu(childs)
tree.append(menu_data)
return tree
# 递归获取所有的子菜单
def get_child_menu(childs):
children = []
if childs:
for child in childs:
data = {
"label":child.name,
"children":[]
}
_childs = Menu.objects.filter(parent=child)
if _childs:
data["children"].append(get_child_menu(_childs))
children.append(data)
return children
# models.py
from django.db import models
class User(models.Model):
username = models.CharField(max_length=16) #创建一个字段,类型为字符串类型,最大长度为16
password = models.CharField(max_length=32) #创建一个字段,类型为字符串类型,最大长度为32
def __unicode__(self):
return self.username
class Menu(models.Model):
name = models.CharField(max_length=64, verbose_name="菜单名称") # 菜单名称
fullName = models.CharField(max_length=512, null=True, blank=True) # 菜单全称
path = models.CharField(max_length=64, null=True, blank=True) # 映射数据路径
parent = models.ForeignKey("Menu", on_delete=models.DO_NOTHING, null=True, blank=True) # 父节点
datum = models.CharField(max_length=64, null=True, blank=True) # 参考基准
type = models.CharField(max_length=64, null=True, blank=True) # 菜单类型
remark = models.CharField(max_length=64, null=True, blank=True) # 备注
def __unicode__(self):
return self.name
def __str__(self):
return self.name
class Meta():
verbose_name = "菜单"
verbose_name_plural = verbose_name
python菜单设计_python django 数据库树形菜单的设计相关推荐
- python建立资料库_python 建立数据库
书籍:python数据科学傻瓜书 Python for Data Science For Dummies 2nd Edition - 2019 简介 学习Python编程和统计数据的快捷方法 Pyth ...
- BOS项目02_02_zTree-通过ajax的获取菜单数据、监听树形菜单的点击事件、读取json文件、Ajax获取数据
系列文章目录 文章目录 系列文章目录 前言 一.发送ajax网络请求获取菜单数据 二.监听树形菜单的点击事件 总结 前言 一.发送ajax网络请求获取菜单数据 我们现在的数是写死的,那么实际项目中我们 ...
- 【毕业设计之python系列】基Django的超市管理系统的设计与实现
基Django的超市管理系统的设计与实现 摘 要 2023年,大家的日常消费水平也在逐步提升,社会越来越稳定,人们的需求越来越好.现在很多超大型智能超市,给大家的美好生活提供便利.为了更好地管理这些大 ...
- python路由编程_Python Django基础二之URL路由系统
MVC和MTV框架 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务 ...
- python bootstrap安装_python + django + bootstrap + uWSGI + nginx 环境搭建
在了解 uWSGI 之前,我们不妨先了解一下 python http服务器? 要使 Python 写的程序能在 Web 上被访问,还需要搭建一个支持 Python 的 HTTP 服务器,列举几个如 G ...
- python 中文查找_python 查找数据库
django.db.utils.ProgrammingError: 1146 的解决办法 在models中设置完数据库相关的东西后执行命令 python manage.py makemigration ...
- python气象数据_python气象数据库
弹性高性能计算E-HPC的管理控制台提供了整个集群生命周期的软件管理功能,支持多款主流HPC软件.通信库的一键查询.安装与卸载. 软件管理界面 进入E-HPC管理控制台,点击左侧栏的集群标签,进入集群 ...
- python调试网页_Python Django shell 调试
Python Django 调试 >>> class Person(models.Model): ... first_name = models.CharField(max_leng ...
- python diango 并发_python - django Model 并发写数据出现重复值
问 题 view视图代码: @login_required def data(request, page, keyword,strEncode): current_username = request ...
最新文章
- ORACLE数据库对比表结构
- Java框架JSON-RPC项目demo代码实战 + JAVA WEB配置虚拟目录(转自21天java web开发)
- Windows Messenger 5.1 [Download from Microsoft]
- Android中多媒体处理【转】
- python 多层嵌套 json_python解析多层json操作示例
- “爸爸,什么是机器学习呀?”
- Dubbo(四)之xml配置方式
- laravel 创建自定义的artisan make命令来新建类文件
- JS学习总结(7)——对象
- python subprocess 非阻塞_python中subprocess.PIPE上的非阻塞读取
- Matlab批量读取csv、txt、prn等文件
- Debug查看汉字机内码
- swarm主网BZZ挖矿:钱包如何添加BZZ合约?如何查钱包余额?
- linux 拼音输出繁体_解决rime仓颉拼音反查为繁体的问题
- 2018 年计算机语言排行榜,TIOBE:2018年11月编程语言排行榜
- node进程cpu 100%问题排查
- RuoYi-Vue部署服务器流程
- P1053 篝火晚会
- S3DIS数据集解析为点云
- 化工专业和计算机专业哪个好就业前景,2019化学工程与工艺专业就业前景和就业方向分析...
热门文章
- http method
- 如何用java语言实现C#中的ref关键字(按引用传递参数)的效果
- python报错 TypeError: string indices must be integers
- HDU 4893 - Wow! Such Sequence!(线段树)
- 理解CSS3中的background-size(对响应性图片等比例缩放)
- 重新使用Eclipse建立安卓工程遇到的问题
- hiho #1485 : hiho字符串(滑动窗口)
- 搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据
- SQL Serve里你总要去改变的3个配置选项
- 转adb Shell root 权限