简体   繁体   English

Monkey补丁Django Runserver命令

[英]Monkey patch Django runserver command

I want to add --env=prod/beta/alpha/dev to runserver so i can do python manage.py runserver --env=prod for example. 我想将--env=prod/beta/alpha/devrunserver以便例如执行python manage.py runserver --env=prod

I've tried to add to settings.py : 我试图添加到settings.py

parser = CommandParser(None)
parser.add_argument('--env')
parser.add_argument('args', nargs='*')  # catch-all

try:
    options, args = parser.parse_known_args(sys.argv[2:])
except CommandError:
    pass  # Ignore any option errors at this point.

APP_ENV = options.env or 'dev' 

But I got: 但是我得到了:

usage: manage.py runserver [-h] [--version] [-v {0,1,2,3}]
                       [--settings SETTINGS] [--pythonpath PYTHONPATH]
                       [--traceback] [--no-color] [--ipv6] [--nothreading]
                       [--noreload] [--nostatic] [--insecure]
                       [addrport]
manage.py runserver: error: unrecognized arguments: --env=beta

Any idea how can I monkey patch runserver ? 任何想法我怎么能猴子补丁runserver

To modify runserver, you could create a custom management command . 要修改运行服务器,您可以创建一个自定义管理命令 You should be able to subclass runserver and add the extra arguments. 您应该能够继承runserver并添加其他参数。

You might find it easier to set an environment variable, rather than changing the runserver command. 您可能会发现,设置环境变量比更改runserver命令更容易。 In your settings, you would do something like: 在您的设置中,您将执行以下操作:

import os
env = os.getenv('ENV') or 'dev'

Then you would run the dev server with 然后,您将使用以下命令运行开发服务器

ENV=dev python manage.py runserver

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM