본문 바로가기
파이썬

파이썬 Python Flask 앱의 settings.py에서 os.getenv ()를 사용하는 이유는 무엇입니까?

by º기록 2020. 9. 13.
반응형


settings.py 에서 확인할 수 있으며 그 아래에서 DEBUG = (os.getenv ( 'CNF_DEBUG', 'True') == 'True') 를 사용하고 있습니다. 터미널에서 conda env를 활성화하고 iPython 콘솔을 활성화 한 후 명령을 입력했습니다.

'CNF_DEBUG' in os.environ

False 입니다.

나머지 settings.py 는 다음과 같습니다.

import os
import datetime
from urllib.parse import urljoin

APP_NAME = "cnf"
APP_SYSTEM_ERROR_SUBJECT_LINE = APP_NAME + "system error"

#Flask Settings
CSRF_ENABLES = True

ROOT_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
# looks like a trick to get it to select default True == True
DEBUG = (os.getenv('CNF_DEBUG', 'True') == 'True')
TESTING = (os.getenv('CNF_TESTING', 'True') == 'True')
FLASK_DEBUG = DEBUG
FLASK_BIND = os.getenv('CNF_BIND', 'localhost')
FLASK_PORT = int(os.getenv('CNF_PORT', 8888))
ROOT_URL = 'http://' + FLASK_BIND + ':' + str(FLASK_PORT) + '/'

TEMPLATE_FOLDER = os.path.join(ROOT_PATH, 'cnf', 'templates')
STATIC_FOLDER = os.path.join(ROOT_PATH, 'cnf', 'static')

MONGODB_HOST = os.getenv('CNF_MONGO_HOST', 'localhost')
MONGODB_PORT = int(os.getenv('CNF_MONGO_PORT', 27017))
MONGODB_DB = os.getenv('CNF_MONGO_DB', 'cnf') # name of db

#encryption, cryptographically signs client-side cookies so they cannot be tampered with
#if tampered, session becomes invalid, insecure not to be used production
SECRET_KEY = 'this key is not secure so be careful until it is'

# Flask-User Settings
# from https://flask-user.readthedocs.io/en/latest/configuring_settings.html
USER_APP_NAME = "cnf"
USER_ENABLE_EMAIL = False  # register with email
USER_ENABLE_CONFIRM_EMAIL = False # force users to confirm email
USER_ENABLE_USERNAME = True  # enable username authentication
USER_REQUIRE_RETYPE_PASSWORD = False  # simplify register form
USER_EMAIL_SENDER_NAME = 'nobu'
#USER_EMAIL_SENDER_EMAIL = 'nobu.kim66@gmail.com' # set up Flask Mail for this
USER_ENABLE_CHANGE_USERNAME = True
USER_ENABLE_CHANGE_PASSWORD = True
USER_ENABLE_FORGOT_PASSWORD = True
#USER_ENABLE_REGISTER = True
USER_ENABLE_REGISTRATION = True
USER_ENABLE_REMEMBER_ME = True
USER_AFTER_LOGIN_ENDPOINT = 'main.member_page'
USER_AFTER_LOGOUT_ENDPOINT = 'main.home_page'


# Flask-Mail settings
# For smtp.gmail.com to work, you MUST set "Allow less secure apps" to ON in Google Accounts.
# Change it in https://myaccount.google.com/security#connectedapps (near the bottom).
MAIL_SERVER = 'smtp.gmail.com'
MAIL_PORT = 587
MAIL_USE_SSL = False
MAIL_USE_TLS = True
MAIL_USERNAME = 'nobu.kim66@gmail.com'
MAIL_PASSWORD = "..."
#ADMINS = ['"Admin One" <admin@gmail.com>,]

# Sendgrid settings
#SENDGRID_API_KEY='place-your-sendgrid-api-key-here'

위의 주석에서 언급했듯이 주석을 사용하는 대신 트릭 일 뿐이라고 생각했지만 다른 이유가 있습니까? 그리고 CNF_TESTING CNF_DEBUG 는 어디에서 찾을 수 있습니까? ROOT_URL FLASK_BIND FLASK_PORT 에 대해서도 수행합니다.

 

해결 방법

 

이들은 환경 변수입니다.

환경 변수를 작성하는 데는 많은 이점이 있습니다. 그 중에는 더 쉬운 컨테이너 설정, 구성에 대한 더 쉽고 표준화 된 액세스 (프로그램 간에도) 및 더 나은 확장이 있습니다.


 

참조 페이지 https://stackoverflow.com/questions/63758154

 

 

반응형

댓글