我正在尋找一種方法來重寫/定義一些個人django設置從命令行沒有額外的設置文件。Django:如何通過個別設置manage.py
我現在需要的是每次運行我的管理命令時設置DEBUG設置或日誌記錄級別。但是能夠設置任何東西會很高興。
我正在尋找一種方法來重寫/定義一些個人django設置從命令行沒有額外的設置文件。Django:如何通過個別設置manage.py
我現在需要的是每次運行我的管理命令時設置DEBUG設置或日誌記錄級別。但是能夠設置任何東西會很高興。
這是我的解決方案。將以下代碼添加到設置文件的底部。
# Process --set command line option
import sys
# This module can be imported several times,
# check if the option has been retrieved already.
if not hasattr(sys, 'arg_set'):
# Search for the option.
args = filter(lambda arg: arg[:6] == '--set=', sys.argv[1:])
if len(args) > 0:
expr = args[0][6:]
# Remove the option from argument list, because the actual command
# knows nothing about it.
sys.argv.remove(args[0])
else:
# --set is not provided.
expr = ''
# Save option value for future use.
sys.arg_set = expr
# Execute the option value.
exec sys.arg_set
然後,只需通過任何代碼,任何管理命令:
./manage.py runserver --set="DEBUG=True ; TEMPLATE_DEBUG=True"
我認爲這是唯一可能的方式,因爲Django不提供任何鉤子預處理命令行參數。我想知道你爲什麼需要它? – Kirill 2011-12-21 00:14:19
嗨基里爾。感謝您的評論。我不確定這一點。另外我不喜歡我的解決方案是我存儲選項值的方式。但我還沒有找到更好的方法來保存進口之間的選項。 – raacer 2011-12-21 14:44:24
爲什麼我需要這是因爲這是在開發過程中調整任何設置的快捷方式。我可以在不修改設置文件的情況下使用設置。而且我可以肯定,我不會忘記將事情改回來(這有時會造成問題)。它也可能用於生產。可以調整cron/celery/etc中單個任務的設置。現在我需要的是使用調試輸出爲我運行一些管理命令,並且僅爲我的合作伙伴提供有用的輸出。我不覺得我應該改變這種需求的命令。 – raacer 2011-12-21 14:52:17
您可以添加自定義選項(例如日誌級別)到您的命令。 Docs
例子:
from optparse import make_option
class Command(BaseCommand):
option_list = BaseCommand.option_list + (
make_option('--delete',
action='store_true',
dest='delete',
default=False,
help='Delete poll instead of closing it'),
)
# ...
謝謝丹尼斯。我當然可以。但我不想將這個選項添加到每個項目中的每個命令。我正在尋找一些更通用的方法。 – raacer 2011-12-19 15:34:53
你可以讓你的settings.py更加意識到它的當前環境:
DEBUG = socket.gethostname().find('example.com') == -1
下面是不同的數據庫的選項時,測試:
'ENGINE': 'sqlite3' if 'test_coverage' in sys.argv else 'django.db.backends.postgresql_psycopg2',
你想每次都設置DEBUG'蟒蛇manage.py runserver'稱爲還是您的自定義命令'蟒蛇manage.py foo',你想在裏面設置DEBUG? – Kirill 2011-12-19 17:30:18
我想爲任何命令設置任何設置。像這樣:'./manage.py --set =「DEBUG = True」runserver「。也許最簡單的方法就是在settings.py中執行命令行參數值。但我希望有一種方法可以根本不修改源代碼。 – raacer 2011-12-19 18:26:24