Django自定义manage命令实例代码

yipeiwu_com7年前Python基础

manage.py是在我们创建Django项目的时候就自动生成在根目录下的一个命令行工具,它可以执行一些简单的命令,其功能是将Django project放到sys.path目录中,同时设置DJANGO_SETTINGS_MODULE环境变量为当前project的setting.py文件。

manage.py的代码是这样的:

#!/usr/bin/env python 
import os 
import sys 
 
if __name__ == "__main__": 
  os.environ.setdefault("DJANGO_SETTINGS_MODULE", "adl_lrs.settings") 
 
  from django.core.management import execute_from_command_line 
 
  execute_from_command_line(sys.argv)

excute_from_command_line()函数会根据命令行参数解析出命令的名称,根据命令名称调用相应的Command执行命令。Command位于各个管理模块的commands模块下面。
所以要自定义manage命令,只需要在app下management目录commands目录下建立目标文件。

需要注意的是,不是所有的.py文件都会被识别为命令的,需引用了BaseCommand的才能被正确识别,而且我们的命令类要继承于BaseCommand它才可以。

示例代码:

from django.core.management.base import BaseCommand,CommandError    
import datetime 
import pytz 
 
class Command(BaseCommand): 
  def handle(self, *args, **options): 
    now=datetime.datetime.now() 
    now=now.replace(hour=0).replace(minute=0).replace(second=0).replace(microsecond=0).replace(tzinfo=pytz.timezone('UTC')) 
    br1=datetime.datetime(2016,6,29) 
    br1=br1.replace(hour=0).replace(minute=0).replace(second=0).replace(microsecond=0).replace(tzinfo=pytz.timezone('UTC')) 
    br2=now 
    print br1,br2 

总结

以上就是本文关于Django自定义manage命令实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

Python多线程经典问题之乘客做公交车算法实例

Python多线程经典问题之乘客做公交车算法实例

本文实例讲述了Python多线程经典问题之乘客做公交车算法。分享给大家供大家参考,具体如下: 问题描述: 乘客乘坐公交车问题,司机,乘客,售票员协同工作,通过多线程模拟三者的工作。 司机...

python中利用zfill方法自动给数字前面补0

python中利用zfill方法自动给数字前面补0

python中有一个zfill方法用来给字符串前面补0,非常有用 view sourceprint? n = "123" s = n.zfill(5) assert s...

使用PyQtGraph绘制精美的股票行情K线图的示例代码

使用PyQtGraph绘制精美的股票行情K线图的示例代码

pyqtgraph是Python平台上一种功能强大的2D/3D绘图库,相对于matplotlib库,由于其在内部实现方式上,使用了高速计算的numpy信号处理库以及Qt的Graphics...

OpenCV+face++实现实时人脸识别解锁功能

OpenCV+face++实现实时人脸识别解锁功能

本文实例为大家分享了OpenCV+face++实现实时人脸识别解锁功能的具体代码,供大家参考,具体内容如下 1.背景 最近做一个小东西,需要登录功能,一开始做的就是普通的密码登录功能,...

python3 与python2 异常处理的区别与联系

在python2.x中 ,异常是这样的处理的,异常基类后面加一个逗号“ ,”  然后跟着异常类型 import traceback try: 1/0 except E...