編寫Django自定義manage命令
阿新 • • 發佈:2019-01-01
manage.py是在我們建立Django專案的時候就自動生成在根目錄下的一個命令列工具,它可以執行一些簡單的命令,其功能是將Django project放到sys.path目錄中,同時設定DJANGO_SETTINGS_MODULE環境變數為當前project的setting.py檔案。manage.py的程式碼是這樣的:
excute_from_command_line()函式會根據命令列引數解析出命令的名稱,根據命令名稱呼叫相應的Command執行命令。Command位於各個管理模組的commands模組下面。#!/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)
所以要自定義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