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,也许会有很多人懵 ...
随机推荐
- 好程序员web前端分享12个CSS高级技巧汇总
好程序员web前端分享下面这些CSS高级技巧,一般人我可不告诉他哦. 使用 :not() 在菜单上应用/取消应用边框 给body添加行高 所有一切都垂直居中 逗号分隔的列表 使用负的 nth-chil ...
- 一起刷LeetCode
题目列表: 题目 解答 26. 删除排序数组中的重复项 https://www.cnblogs.com/powercai/p/10791735.html 25. k个一组翻转链表 https://ww ...
- JProfiler的详细使用介绍
转:https://blog.csdn.net/huangjin0507/article/details/52452946 下载软件 官网地址:http://www.ej-technologies.c ...
- maven打包如何跳过测试
Maven打包如何跳过测试?正常来说,不应该这样做,因为测试可以避免很多麻烦排除一些不必要的错误,前提是测试足够规范,这里主要指junit测试,如果junit测试有问题的话,将会直接影响到mvn in ...
- javaweb项目环境搭建,jdk,tomcat,myeclipse,sqlserver安装 配置
myeclipse是一个java的IDE,myeclipse中虽然内置了JDK和Tomacat服务器,但可以不使用,通过进行相应的配置,使用自行安装的JDK和Tomcat.安装Tomcat之前,一定要 ...
- 剑指Offer面试题 二维数组中的查找
题目链接:https://www.nowcoder.com/questionTerminal/abc3fe2ce8e146608e868a70efebf62e 题目大意: 略 分析: 对萌醒很开拓思维 ...
- vue中怎么全局引入sass文件
1.添加依赖 npm install sass-resources-loader --save-dev 2.修改build/utils.js scss: generateLoaders('sass') ...
- audio与video控件/标签的隐藏,iso/Android下自动全屏播放,短暂黑屏问题
(一)audio音频标签 <audio src="xxx.mp3"></audio> (二)video视频标签 <video src="xx ...
- BZOJ 1010: 玩具装箱toy (斜率优化dp)
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1... ...
- Linux-ftp虚拟用户配置
云服务器ESC 部署vsftpd 虚拟用户 说明:云服务器部署和本地服务器部署一样,都需要开通指定的相应端口,只不过云服务器需要在安全组规则中打开相应的端口允许通过. 环境说明: 对应的用户对应不同的 ...