溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Django如何編寫(xiě)自定義manage.py命令

發(fā)布時(shí)間:2021-11-20 17:27:51 來(lái)源:億速云 閱讀:251 作者:小新 欄目:大數(shù)據(jù)

小編給大家分享一下Django如何編寫(xiě)自定義manage.py命令,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

python manage.py <command> 的命令我們用了很多,要是我們想要使用一些特定的較長(zhǎng)的命令時(shí),比如:python manage.py test --keepdb --settings=appname.test_settings(命令作用:運(yùn)行項(xiàng)目測(cè)試時(shí),使用指定的配置文件),這時(shí)每次運(yùn)行的就很麻煩,可以通過(guò)設(shè)定自定義manage.py命令來(lái)實(shí)現(xiàn)。

操作步驟要點(diǎn):

第一步:新建自定義命令模塊

在已有的項(xiàng)目中,在你要設(shè)置的項(xiàng)目app下,增加management/commands目錄,新建python模塊,模塊名不能以“_”開(kāi)頭,否則模塊不會(huì)被設(shè)置為自定義命令。設(shè)置的自定義命令為模塊的名字,創(chuàng)建好后的目錄樹(shù)如下:

appname/        # django項(xiàng)目下的某個(gè)app
   __init__.py
   models.py
   management/
       commands/
           _private.py # 這模塊不會(huì)被加入到自定義命令
           newtest.py    # 這個(gè)模塊會(huì)被設(shè)置為自定義命令,命令為模塊名
   tests.py
   views.py
注意:添加自定義命令的app需要在`settings.py`INSTALLED_APPS中注冊(cè)。
第二步:編寫(xiě)自定義命令功能

設(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='測(cè)試哪個(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í),就會(huì)調(diào)用test測(cè)試,并運(yùn)行指定的測(cè)試專用settings.py配置。

注意:要打印輸出信息,要使用:`self.stdout.write("Unterminated line", ending='')`,`ending=''參數(shù)是指定輸出信息后以什么結(jié)尾,不配置參數(shù)默認(rèn)是換行符。`

看完了這篇文章,相信你對(duì)“Django如何編寫(xiě)自定義manage.py命令”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI