Django commands自定制
什么是Django Commands
Django 对于命令的添加有一套规范,你可以为每个app 指定命令。通俗一点讲,比如在使用manage.py文件执行命令的时候,可以自定制自己的命令,来实现命令的扩充。
commands的创建
1、在app内创建一个management的python目录
2、在management目录里面创建commands的python文件夹
3、在commands文件夹下创建任意py文件
此时py文件名就是你的自定制命令,可以使用下面方式执行
python manage.py 命令名

撰写command文件要求
首先对于文件名没什么要求,内部需要定义一个Command类并继承BaseCommand类或其子类。
文件结构

其中help是command功能作用简介,handle函数是主处理程序,add_arguments函数是用来接收可选参数的
简单测试
# -*- coding: utf-8 -*-
# __author__ = 'dandy'
from django.core.management.base import BaseCommand class Command(BaseCommand):
help = 'test' def handle(self, *args, **options):
print('test')
带参数的测试
# -*- coding: utf-8 -*-
# __author__ = 'dandy'
from django.core.management.base import BaseCommand class Command(BaseCommand): def add_arguments(self, parser):
parser.add_argument('aaa', nargs='+', type=int)
parser.add_argument('--delete',
action='store_true',
dest='delete',
default=False,
help='Delete poll instead of closing it') def handle(self, *args, **options):
print('test')
print(args, options)

options里面直接取参数就可以了。
# -*- coding: utf-8 -*-
# __author__ = 'dandy'
from django.core.management.base import BaseCommand
from django.conf import settings
import requests
import os
import threading command_path = os.path.join(settings.BASE_DIR, 'api', 'management', 'commands')
file = os.path.join(command_path, 'api_urls') class Command(BaseCommand):
help = 'test cost time for each api when getting data .We have set a middleware and create a file for log.' \
'here just send request by thread pool' def handle(self, *args, **options):
url_list = []
try:
if not os.path.exists(file):
raise FileNotFoundError('ERROR!!!! no file named api_urls in %s' % file)
with open (file, 'rb') as obj:
urls = obj.readlines()
if not len(urls):
raise Exception('ERROR!!! api_urls is a empty file !!')
for url in urls:
url = url.strip()
if url:
t = threading.Thread(target=self.get_url, args=(url,))
# t.setDaemon(True) # set True and you don't need to wait until main thread finished
t.start()
print('send all request successfully !')
except Exception as e:
print(e) def get_url(self, url):
requests.get(url)
实战1
http://www.baidu.com
http://www.qq.com
api_urls
Django commands自定制的更多相关文章
- Django admin自定制功能
一:基础设置 1.应用注册 1)方式一 若要把app应用显示在后台管理中,需要在admin.py中注册.打开admin.py文件,如下代码: from django.contrib import ad ...
- Django的admin定制
1,models编写 #encoding=utf-8 from django.db import models # Create your models here. class BookInfo(mo ...
- Django 源码小剖: Django 对象关系映射(ORM)
引 从前面已经知道, 一个 request 的到来和一个对应 response 的返回的流程, 数据处理和数据库离不开. 我们也经常在 views.py 的函数定义中与数据库打交道. django O ...
- 使用python+django+twistd 开发自己的操作和维护系统的一个
许多开源操作系统和维护系统,例nagios.zabbix.cati等等,但是,当他们得到的时间自己的个性化操作和维护需求,始终无力! 最近的一项研究python.因此,我们认为python+djang ...
- django的内置分页
本节内容 自定义一个简单的内置分页 Django内置分页 Django内置分页扩展(继承) 自定义内置组件 自定义一个简单的内置分页 先用django自己自定制一个简单的内置分页,大概掌握内置分页的底 ...
- Django 通过 mongoengine 连接 MongoDB 进而使用orm进行CRUD
一. 在python脚本中, 我们通常可以使用pymongo模块实现与mongodb数据库的交互, 但是在使用Django框架进行定制开发的web server 项目中, 仍然使用pymongo模块的 ...
- 转:pycharm community debug django projects
原文:https://automationpanda.com/2017/09/14/django-projects-in-pycharm-community-edition/comment-page- ...
- django “如何”系列2:如何编写django-admin 命令
应用可以使用manage.py注册自己的动作,例如,你可能想要为你即将发布的应用添加一个manage.py 操作.这节我们将为polls应用添加一个closepoll的命令 添加一个managemen ...
- django dynamic model
django model 首先对于一个习惯用django model的骚年来说,你肯定对django model自定制用的很熟悉,但突然让你用django dynamic model,也许会有很多人懵 ...
随机推荐
- 【题解】UVA11362 Phone List
Tags : 排序,字典树 从短到长排序,逐个插入字典树.若与已有的重复,返回错误信息. #include <iostream> #include <stdio.h> ...
- 【转】分享JavaScript监听全部Ajax请求事件的方法
若Ajax请求是由jQuery的$.ajax发起的,默认情况下可以使用 jQuery的Global Ajax Event Handlers监听到Ajax事件,然而我遇到的却是用原生JavaScript ...
- day 23 面向对象二
复习 '''1.面向过程与面向对象 过程:程序流程化,可拓展性差 对象:程序流程多样化,可拓展性强 变量 | 函数 => 属性 | 方法:前者直接使用,通过所属者.语法调用2.拥 ...
- QPen
Help on class QPen in module PyQt5.QtGui: class QPen(sip.simplewrapper) | QPen() | QPen(Qt.PenStyl ...
- JS Jquery 中 的遍历
$.each()和$().each(),以及forEach()的用法 1.forEach是js中遍历数组的方法,如下 var arr=[1,2,3,4];arr.forEach(functio ...
- Ubuntu下找不到ttyUSB*问题解决
一.硬件连接 确认Ubuntu对USB转串口设备的支持. 1.# lsmod | grep usbserial如果有usbserial,说明系统支持USB转串口. 如果没有,先安装ch340驱动或者c ...
- Spring中@Transactional用法
作者:bladestone 来源:CSDN 原文:https://blog.csdn.net/blueheart20/article/details/44654007 版权声明:本文为博主原创文章,转 ...
- Android P添加一个可以让system_server进程访问的hal service需要改动的sepolicy文件
在device/sepolicy/common目录中: 修改文件attributes: attribute hal_newXX;attribute hal_newXX_client;attribute ...
- Xilinx FPGA引脚txt文件导入excel中
需求 为了把xilinx FPGA的官方引脚文件txt转成excel文件(实际官网中有对应的csv文件就是excel文件了...) xilinx FPGA引脚地址:https://china.xili ...
- [AH2017/HNOI2017]大佬
题目描述 人们总是难免会碰到大佬.他们趾高气昂地谈论凡人不能理解的算法和数据结构,走到任何一个地方,大佬的气场就能让周围的人吓得瑟瑟发抖,不敢言语. 你作为一个 OIER,面对这样的事情非常不开心,于 ...