官網檔案地址:撰寫自定義 django-admin 命令
金句:
你所浪費的今天,正是昨天死的人所期待的明天,
開篇話:
python manage.py <command> 的命令我們用了很多,要是我們想要使用一些特定的較長的命令時,比如:python manage.py test --keepdb --settings=appname.test_settings(命令作用:運行專案測驗時,使用指定的組態檔),這時每次運行的就很麻煩,可以通過設定自定義manage.py命令來實作,
操作步驟要點:
第一步:新建自定義命令模塊
在已有的專案中,在你要設定的專案app下,增加 management/commands目錄,新建python模塊,模塊名不能以“_”開頭,否則模塊不會被設定為自定義命令,設定的自定義命令為模塊的名字,創建好后的目錄樹如下:
appname/ # django專案下的某個app
__init__.py
models.py
management/
commands/
_private.py # 這模塊不會被加入到自定義命令
newtest.py # 這個模塊會被設定為自定義命令,命令為模塊名
tests.py
views.py
注意:添加自定義命令的app需要在`settings.py`INSTALLED_APPS中注冊,
第二步:撰寫自定義命令功能
設定newtest.py要實作的功能,newtest.py的內容:
import os
import traceback
from django.core.management.base import BaseCommand, CommandError
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument(
dest='appname', # 引數名字
type=str, # 引數型別
help='測驗哪個app', # 幫助資訊
)
def handle(self, *args, **options):
try:
shell_info ='python manage.py test %s --keepdb --settings=appname.test_settings' % (options['appname'])
os.system(shell_info)
self.stdout.write(self.style.SUCCESS('命令%s執行成功, 引數為%s' % (__file__, options['appname'])))
except:
self.stdout.write(traceback.format_exc())
self.stdout.write(self.style.ERROR('命令執行出錯'))
以上功能解釋:執行python manage.py newtest appname時,就會呼叫test測驗,并運行指定的測驗專用settings.py配置,
注意: 要列印輸出資訊,要使用:`self.stdout.write("Unterminated line", ending='')`,`ending=''引數是指定輸出資訊后以什么結尾,不配置引數默認是換行符,`
如果各位有什么不明白的地方,可以留言回復,
本文首發于BigYoung小站
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/153373.html
標籤:Python
