在Django開發(fā)過程中我們都用過django-admin.py和manage.py命令。
創(chuàng)新互聯(lián)公司主營昌圖網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app開發(fā)定制,昌圖h5重慶小程序開發(fā)公司搭建,昌圖網(wǎng)站營銷推廣歡迎昌圖等地區(qū)企業(yè)咨詢django-admin.py是一個命令行工具,可以執(zhí)行一些管理任務,比如創(chuàng)建Django項目。而manage.py是在創(chuàng)建每個Django project時自動添加在項目目錄下的,只是對manage.py的一個簡單包裝,其功能是將Django project放到sys.path目錄中,同時設置DJANGO_SETTINGS_MODULE環(huán)境變量為當前project的setting.py文件。
Django 對于命令的添加有自己的一套規(guī)范,我們可以為每個app 指定命令。簡單來書就是我們在使用manage.py文件執(zhí)行命令的時候,可以自定制自己的命令,來實現(xiàn)命令的擴充。
對于自定義Command我們從兩方面介紹一是內(nèi)部執(zhí)行原理,二是如何實行自定義Command
一、內(nèi)部原理實現(xiàn)
django-admin.py調(diào)用django.core.management來執(zhí)行命令:
創(chuàng)建django項目會自動生成manage.py文件:
import os import sys def main(): os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gaoyou.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" ) from exc execute_from_command_line(sys.argv) if __name__ == '__main__': main()