Environment variables help keep sensitive information like passwords safe and let you change settings without changing your code.
Environment variable management in Flask
import os # Get an environment variable value = os.getenv('VARIABLE_NAME', 'default_value')
Use os.getenv to read environment variables safely.
You can provide a default value if the variable is not set.
SECRET_KEY environment variable.import os secret_key = os.getenv('SECRET_KEY')
PORT variable or uses '5000' if not set.import os port = os.getenv('PORT', '5000')
DEBUG and converts it to a boolean.import os debug_mode = os.getenv('DEBUG', 'False') == 'True'
This Flask app reads the SECRET_KEY and PORT from environment variables. It shows the secret key on the home page and runs on the specified port or 5000 by default.
import os from flask import Flask app = Flask(__name__) # Set secret key from environment variable app.config['SECRET_KEY'] = os.getenv('SECRET_KEY', 'defaultsecret') @app.route('/') def home(): return f"Secret key is: {app.config['SECRET_KEY']}" if __name__ == '__main__': port = int(os.getenv('PORT', '5000')) app.run(debug=True, port=port)
Never commit real secrets to your code repository.
Use a .env file with tools like python-dotenv during development to load environment variables.
Environment variables are strings; convert them if you need other types.
Environment variables keep sensitive info safe and separate from code.
Use os.getenv to read them with optional defaults.
Set different values for development and production easily.
Practice
Solution
Step 1: Understand environment variables purpose
Environment variables store sensitive info like passwords or API keys outside the code to keep them safe.Step 2: Identify the correct use in Flask
Flask apps use environment variables to avoid hardcoding secrets and to configure settings per environment.Final Answer:
To keep sensitive information like passwords out of the code -> Option DQuick Check:
Environment variables = keep secrets safe [OK]
- Thinking environment variables speed up the app
- Confusing environment variables with session storage
- Believing environment variables remove Python dependency
SECRET_KEY with a default fallback in Flask?Solution
Step 1: Recall correct function to get env variable with default
Useos.getenvwith two arguments: variable name and default value.Step 2: Check each option syntax
A raises KeyError if missing despite the fallback attempt. B uses invalid tuple syntax for dict access. C uses non-existentos.get. D:os.getenv('SECRET_KEY', 'default_key')is correct.Final Answer:
os.getenv('SECRET_KEY', 'default_key') -> Option AQuick Check:
Use os.getenv with default [OK]
- Using os.environ['KEY'] or default which still raises KeyError if missing
- Using non-existent os.get function
- Using invalid tuple syntax with os.environ
import os
secret = os.getenv('MY_SECRET', 'none')
print(secret)If the environment variable
MY_SECRET is not set, what will be printed?Solution
Step 1: Understand os.getenv behavior with default
If the environment variable is missing, os.getenv returns the default value provided.Step 2: Check the default value in code
The default is the string 'none', so it will print exactly 'none'.Final Answer:
none -> Option AQuick Check:
Missing env var returns default string [OK]
- Expecting a runtime error if env var missing
- Confusing string 'none' with Python None
- Assuming empty string is default
import os
api_key = os.environ.get('API_KEY', 'default')
print(api_key)Solution
Step 1: Check os.environ type and methods
os.environ behaves like a dictionary and supports the get method with a default value.Step 2: Verify code behavior if variable missing
If 'API_KEY' is missing, get returns the default 'default' without error.Final Answer:
There is no error; the code works correctly -> Option CQuick Check:
os.environ.get supports default argument [OK]
- Thinking os.environ lacks get method
- Expecting KeyError when using get with default
- Confusing os.getenv and os.environ.get differences
Solution
Step 1: Understand environment variable usage for config
Set environment variables differently on each machine (dev, prod) to hold the database URL.Step 2: Use os.getenv in Flask config to read the variable
Usingos.getenv('DATABASE_URL')reads the correct URL depending on environment.Final Answer:
SetDATABASE_URLin environment for each environment, then useos.getenv('DATABASE_URL')in Flask config -> Option BQuick Check:
Env vars per environment + os.getenv = config flexibility [OK]
- Hardcoding URLs loses flexibility and security
- Using os.environ without setting env var causes errors
- Storing secrets in code files risks exposure
Ready to prove it?
Pass the test and this pattern moves unknown
