【问题标题】:How to add environment variables to command line in Django runserver如何在 Django runserver 中将环境变量添加到命令行
【发布时间】:2021-04-15 10:07:00
【问题描述】:

如果你能帮助我,我将不胜感激。

我想在命令行中添加一些环境变量如下:

python manage.py runserver myvar=myvar_value

我在views.py请求函数中使用了myvar,实际上服务器做了不同的工作我想用myvar做一个标志来确定 myvar 等于 1,运行视图文件中的一些函数,如果 myvar 为 0,则运行一些其他函数。

【问题讨论】:

    标签: python-3.x django django-views


    【解决方案1】:

    最好和最 Django 的方法是为此使用 settings.py 文件。

    # settings.py
    import os
    
    MY_VAR = os.environ.get("MYVAR", default="default")
    
    # views.py
    from django.conf import settings
    
    def my_view(request):
        my_var = settings.MY_VAR
        # do something with it
    

    然后你可以这样启动服务器:

    $ MYVAR=foobar python manage.py runserver
    

    这是一种标准的 POSIX 方法,可以将环境变量添加到被调用的程序中。如果你随后通过 Docker 部署它,你可以使用 .env 文件。

    【讨论】:

    • 感谢您的回复。运行views.py 时出现此错误。发生异常:ImproperlyConfigured 请求设置 node_type,但未配置设置。您必须在访问设置之前定义环境变量 DJANGO_SETTINGS_MODULE 或调用 settings.configure()。
    • 不能直接运行views.py。 Django 必须始终通过 manage.py 脚本或通过 WSGI 服务器(例如 Gunicorn)启动。
    • 我刚刚测试过它,奇怪的是 Django 会要求你遵守SCREAM_CASE_VAR_NAME,因为它是一个 Python 全局的。如果您将变量更改为NODE_TYPE,它将起作用。我在最初的答案中确实有这个,但我们都不知道它真的一直在那里。好笑……
    • 实际上记录在here。我从来没有注意到。
    • 当我在 windows powershell 上工作时,我应该输入如下环境变量:$env:NODE_TYPE = "s1"
    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多