小編給大家分享一下Django如何編寫自定義manage.py命令,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
成都服務(wù)器托管,成都創(chuàng)新互聯(lián)提供包括服務(wù)器租用、成都服務(wù)器托管、帶寬租用、云主機(jī)、機(jī)柜租用、主機(jī)租用托管、CDN網(wǎng)站加速、域名與空間等業(yè)務(wù)的一體化完整服務(wù)。電話咨詢:18980820575
python manage.py <command>
的命令我們用了很多,要是我們想要使用一些特定的較長的命令時(shí),比如:python manage.py test --keepdb --settings=appname.test_settings
(命令作用:運(yùn)行項(xiàng)目測試時(shí),使用指定的配置文件),這時(shí)每次運(yùn)行的就很麻煩,可以通過設(shè)定自定義manage.py命令來實(shí)現(xiàn)。
在已有的項(xiàng)目中,在你要設(shè)置的項(xiàng)目app下,增加management/commands
目錄,新建python模塊,模塊名不能以“_”開頭,否則模塊不會被設(shè)置為自定義命令。設(shè)置的自定義命令為模塊的名字,創(chuàng)建好后的目錄樹如下:
appname/ # django項(xiàng)目下的某個(gè)app
__init__.py
models.py
management/
commands/
_private.py # 這模塊不會被加入到自定義命令
newtest.py # 這個(gè)模塊會被設(shè)置為自定義命令,命令為模塊名
tests.py
views.py
注意:添加自定義命令的app需要在`settings.py`INSTALLED_APPS中注冊。
設(shè)置newtest.py
要實(shí)現(xiàn)的功能,newtest.py
的內(nèi)容:
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', # 參數(shù)名字
type=str, # 參數(shù)類型
help='測試哪個(gè)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執(zhí)行成功, 參數(shù)為%s' % (__file__, options['appname'])))
except:
self.stdout.write(traceback.format_exc())
self.stdout.write(self.style.ERROR('命令執(zhí)行出錯(cuò)'))
以上功能解釋:執(zhí)行python manage.py newtest appname
時(shí),就會調(diào)用test測試,并運(yùn)行指定的測試專用settings.py配置。
注意:要打印輸出信息,要使用:`self.stdout.write("Unterminated line", ending='')`,`ending=''參數(shù)是指定輸出信息后以什么結(jié)尾,不配置參數(shù)默認(rèn)是換行符。`
看完了這篇文章,相信你對“Django如何編寫自定義manage.py命令”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章名稱:Django如何編寫自定義manage.py命令
文章網(wǎng)址:http://chinadenli.net/article10/ppjodo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、虛擬主機(jī)、網(wǎng)站改版、手機(jī)網(wǎng)站建設(shè)、全網(wǎng)營銷推廣、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)