Django 自定义管理员命令
来源:互联网 发布:网络语打卡失败 编辑:程序博客网 时间:2024/06/05 04:47
Django 自定义管理员命令
在Django之中可以自定义管理员命令,通常是有两种做法的,一种是对单个app定义manage命令,对于该app所做的一些处理。一种是对整个工程所作用的manage命令,用来启动某些service。
注册manage命令只需要在app中创建一个management/commands路径,Django会自动将该路径下不以’_’开头的文件注册为manage.py的命令。
如下路径:
polls/ __init__.py models.py management/ __init__.py commands/ __init__.py _private.py closepoll.py tests.py views.py
对于注册的manage.py命令closepoll仅仅需要满足将一个条件 —— 其必须定义一个继承自BaseCommand或者其子类的Command类。
如下:
from django.core.management.base import BaseCommand, CommandErrorfrom polls.models import Pollclass Command(BaseCommand): help = 'Closes the specified poll for voting' def add_arguments(self, parser): parser.add_argument('poll_id', nargs='+', type=int) def handle(self, *args, **options): for poll_id in options['poll_id']: try: poll = Poll.objects.get(pk=poll_id) except Poll.DoesNotExist: raise CommandError('Poll "%s" does not exist' % poll_id) poll.opened = False poll.save() self.stdout.write('Successfully closed poll "%s"' % poll_id)
这个例子之中将Poll应用之下的Poll model之中的数据的opened设置为False。
从这个例子就可以看出,manage命令常见的一个应用场景就是独立脚本。
增加可选参数
Command提供了一个方法用来增加可选的参数——add_arguments()
class Command(BaseCommand): def add_arguments(self, parser): # Positional arguments parser.add_argument('poll_id', nargs='+', type=int) # Named (optional) arguments parser.add_argument('--delete', action='store_true', dest='delete', default=False, help='Delete poll instead of closing it') def handle(self, *args, **options): # ... if options['delete']: poll.delete() # ...
这种设计就是传入参数如–delete, 所有的manager都有默认的选项–verbosity和–traceback。
0 0
- Django 自定义管理员命令
- 自定义Django Command命令
- 自定义Django Command命令
- django自定义command命令
- 编写第一个Django app之自定义管理员功能
- 编写Django自定义manage命令
- Django 自定义manage.py 命令
- django manage.py扩展自定义命令
- django manage.py扩展自定义命令
- Django 设置sqlite3管理员用户密码
- Django忘记管理员用户名密码
- 管理员登陆服务器命令
- mysql管理员常见命令
- linux 添加管理员命令
- Django命令
- django 1.8 官方文档翻译: 6-4-2 编写自定义的django-admin命令
- django学习纪要(管理员界面)
- django-cms的管理员登录密码
- XAMPP Error:Apache shutdown unexpectedly 解决方案
- Java Web项目中文乱码
- VS c2065 未声明的标识符 另外一种解决方案
- WAMP环境搭建
- Codeforces Round #327 (Div. 2)B. Rebranding
- Django 自定义管理员命令
- 天空盒和相机01
- c++引用的使用以及实质
- HTTP简介<学习笔记>
- ios入门攻略 03篇 C语言基础【运算符】
- Codeforces Round #327 (Div. 2)C. Median Smoothing
- 使用wireshark分析TCP/IP协议中TCP包头的格式
- UEST OJ1222(DFS)
- 2015南阳理工CCPC The Battle of Chibi