首页 > 其他分享 >django BaseCommand

django BaseCommand

时间:2023-12-05 11:15:00浏览次数:38  
标签:sub menu self BaseCommand django func pids subs

使用命令行 执行脚本

from django.core.management.base import BaseCommand
from django.db import transaction
from apps.db.models import AdminMenu


class Command(BaseCommand):
    help = '管理端、PC端、H5端菜单'

    def add_arguments(self, parser):
        parser.add_argument('-func', action='store', dest='func', default=False, help='')
        parser.add_argument('-arg', action='store', dest='arg', default='', help='')

    def handle(self, *args, **options):
        # print(args, options)
        # print('====禁止执行====')
        # return
        _func = options.get('func', None)  # 操作方法
        arg = options.get('arg', None)  # 操作参数
        if hasattr(self, _func):
            if arg:
                eval('self.%s(%s)' % (_func, arg))
            else:
                eval('self.%s()' % _func)
        else:
            print('error: 无效的参数func')
        print('===========end==============')
 def pc(self):
        menus = [
            {"name": "主页",
                "code": "",
                "sort": 1,
                "icon": "/statics/icon/admin/menu1.svg",
                "is_menu": True,
                "type": 2,
                "subs": []
             },
        ]
        with transaction.atomic():
            for menu in menus:
                obj1 = AdminMenu.objects.create(
                    name=menu['name'],
                    code=menu['code'],
                    sort=menu['sort'],
                    icon=menu['icon'],
                    is_menu=menu['is_menu'],
                    type=menu['type'],
                    enabled=True,
                    pid=None,
                    pids=None
                )
                self.sub_menu(obj1, menu['subs'], [obj1.uuid])

    def sub_menu(self, obj1, subs, pids):
        if subs:
            for sub in subs:
                obj2 = AdminMenu.objects.create(
                    name=sub['name'],
                    code=sub['code'],
                    sort=sub['sort'],
                    icon=sub['icon'],
                    is_menu=sub['is_menu'],
                    type=sub['type'],
                    enabled=True,
                    pid=obj1,
                    pids=pids
                )
                sub_pids = pids + [obj2.uuid]
                self.sub_menu(obj2, sub['subs'], sub_pids)

用法


标签:sub,menu,self,BaseCommand,django,func,pids,subs
From: https://www.cnblogs.com/guanchaoguo/p/17876759.html

相关文章

  • Django学习(二) 之 模板的使用
    写在前面昨晚应该是睡的最好一天吧,最近一个月睡眠好差,睡不着不说,而且半夜总醒,搞的我第二天就会超没精神。昨天下午去姐姐家,我刚进屋,小外甥直接就问我说:老舅,你都很长时间没来啦,**(前女友)哪去了,我们都好久没出溜溜了!我顿了下说,她不喜欢我们了,等以后天暖和,我们再去溜溜。......
  • Django和sqlite3版本不匹配解决 Django-django.core.exceptions.ImproperlyConfigured
    1.修改django源文件配置2升级sqlite下载sqlite3wgethttps://www.sqlite.org/2019/sqlite-autoconf-3270200.tar.gz 解压并安装sqlite3tar-zxvfsqlite-autoconf-3270200.tar.gzcdsqlite-autoconf-3270200./configure--prefix=/usr/localmake&&makeinstall......
  • django框架01
    纯手撸web框架"""web框架:将前端数据库整合到一起基于互联网传输的python代码web框架也可以简单的理解为是软件开发架构里面的'服务端'"""#1.搭建简易版本服务端socket模块#2.遵循HTTP协议四大特性/数据格式/响应状态码#3.基于不同的后缀响应不同的内容如何获取......
  • win10 访问 ubuntu 虚拟机 上的Django web 服务 操作 和 问题解决
    虚拟机版本VMware16proubuntu版本 Ubuntu22.04.1LTS 第一步:虚拟机设置NATEdit>VirtualNetworkEditor修改配置更改DHCP设置要注意ip地址要用在虚拟机Ubuntu系统中的网段范围 在NAT添加端口转发 查看ubuntu防火墙sudoufwstatus Status:ina......
  • Django学习(一) 之 环境搭建
    写在前面最近比较迷AI绘图,那就上个图吧,我感觉还挺好看的。可能会有人说,之前不一致分享的是flask吗,怎么突然改到django了?这个问题问得好,开发环境遇到了一些小困难!不过django,真的是很流行,一点都不过时,这您放心好了!不多说,直接看效果吧!环境搭建1、当前环境版本python==3.9.10django==......
  • Django 日作 12/3 ---日志模块封装(loguru)
    #1pythonloguru如何用,如何把日志写到文件中,日志级别有哪些https://loguru.readthedocs.io/en/stable/resources/recipes.html#compatibility-with-multiprocessing-using-enqueue-argument  官方loguru不需要配置,输出到文件的话——先导入loguru包,fromloguruimportl......
  • Django连接Redis
    1、安装redis库pipinstalldjango-redis2、配置django中的settings.py#redis配置CACHES={"default":{"BACKEND":"django_redis.cache.RedisCache","LOCATION":"redis://127.0.0.1:6379......
  • django-apschedule定时任务异常停止
    背景在django项目中使用django-apschedule来实现定时任务,使用的是BackgroundScheduler调度类,该调度的实现是通过后台线程的方式执行定时任务。其中任务都是持久化到数据库中的。在项目的运行过程中,因为数据库的异常,导致定时任务线程异常终止,即使数据库后续恢复正常,但也不再继续执行......
  • Django补4
    过滤器写一个过滤器---》一堆内容---》经过过滤器后---》把关键词屏蔽#自定义过滤器{{变量|过滤器名字}}编写步骤1注册app2在某个app下:创建templatetags模块(模块名只能是templatetags)3在包下写一个py文件,随便命名4在py文件中:写入fromdjangoimporttemplateregister=t......
  • Django四件套在响应头中放入数据的方法
    HttpResponse方法一:returnHttpResponse('ok',headers={'xxx':'xxx'})方法二:obj=HttpResponse('ok')obj['yyy']='yyy'#像字典一样放入,最终会放在http的响应头中returnobj redirect无法直接传headers=传入数据方法:obj=......