簡體   English   中英

如何將環境變量添加到django項目中

[英]How do you add environment variables to your django project

我正在嘗試設置我的項目,以便它可以在本地使用環境變量

我已經嘗試將它添加到我的激活文件的末尾和其他東西的列表。 我正在嘗試使用它

from .base import *

    if os.environ['DJANGO_SERVER_TYPE'] == 'local':
        try:
            from .local import *
        except:
            pass

    if os.environ['DJANGO_SERVER_TYPE'] == 'production':
        try:
            from .production import *
        except:
            pass

我是一個真正的新手,事實上經常解釋簡短和事實。 因此,如何實現這一點,徹底的解釋將對我有益。 我從來沒有做過任何事情。 我試過這樣做

export KEY=VALUE

在激活文件中,只是因為它不被系統識別,我必須將其刪除才能使用我的本地服務器

如果您通過Django Web服務器運行它,您可以像對任何其他命令一樣傳遞環境變量:

DJANGO_SERVER_TYPE="local" ./manage.py runserver

如果您通過Apache等Web服務器運行它,則可以通過虛擬主機配置設置環境變量:

SetEnv DJANGO_SERVER_TYPE local

安裝environ庫並將以下代碼添加到您的設置文件中:

root_path = environ.Path(__file__) - 2
env = environ.Env(DEBUG=(bool, False), DJANGO_ENV=(str, 'dev')) # set default    values and casting
environ.Env.read_env(root_path('.env')) 

在項目文件夾的根目錄中添加一個名為.env的文件,其變量格式如下:

DEBUG=on    

我有一個設置模塊,其中包含以下內容:

…
import os
from django.core.exceptions import ImproperlyConfigured
…

def _require_env(name):
    """Raise an error if the environment variable isn't defined"""
    value = os.getenv(name)
    if value is None:
        raise ImproperlyConfigured('Required environment variable "{}" is not set.'.format(name))
    return value

…

SECRET_KEY = _require_env('SOMETHING_SECRET_KEY')

_db_host = os.getenv('SOMETHING_MYSQL_HOST', 'mysql')
_db_port = os.getenv('SOMETHING_MYSQL_PORT', 3306)   
_db_name = _require_env('SOMETHING_MYSQL_DATABASE')         
_db_user = _require_env('SOMETHING_MYSQL_USER')             
_db_password = _require_env('SOMETHING_MYSQL_PASSWORD')

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',
                     'NAME': _db_name,                    
                     'HOST': _db_host,                    
                     'PORT': _db_port,                    
                     'USER': _db_user,                    
                     'PASSWORD': _db_password,
    … } }

等等。

_require_env用於必須設置的環境變量。 如果找不到這些環境值,Django會立即引發一個ImproperlyConfigured錯誤。 在其他情況下,我只使用帶有默認值的os.getenv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM