Bird
Raised Fist0
Djangoframework~10 mins

Environment variables for secrets in Django - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the module used to access environment variables in Django settings.

Django
import [1]
Drag options to blanks, or click blank then click option'
Adjango
Bsys
Cos
Denv
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'sys' instead of 'os' to access environment variables.
Trying to import a non-existent module like 'env'.
2fill in blank
medium

Complete the code to get the secret key from environment variables in Django settings.

Django
SECRET_KEY = os.environ.get([1])
Drag options to blanks, or click blank then click option'
A'SECRET_KEY'
B'KEY_SECRET'
C'SECRET'
D'DJANGO_SECRET'
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect environment variable names like 'DJANGO_SECRET'.
Forgetting to put the variable name in quotes.
3fill in blank
hard

Fix the error in the code to safely get an environment variable with a default fallback.

Django
DEBUG = os.environ.get([1], 'False') == 'True'
Drag options to blanks, or click blank then click option'
A'DEBUG'
BDEBUG_MODE
Cdebug
D'DEBUG_MODE'
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable names without quotes causing syntax errors.
Using incorrect environment variable names.
4fill in blank
hard

Fill both blanks to load environment variables from a .env file using python-dotenv in Django.

Django
from dotenv import [1]
[2]()
Drag options to blanks, or click blank then click option'
Aload_dotenv
Bfind_dotenv
Cdotenv
Dloadenv
Attempts:
3 left
💡 Hint
Common Mistakes
Importing the wrong function like 'find_dotenv' and calling it incorrectly.
Not calling the function after importing.
5fill in blank
hard

Fill all three blanks to create a dictionary of database settings using environment variables in Django.

Django
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get([1]),
        'USER': os.environ.get([2]),
        'PASSWORD': os.environ.get([3]),
    }
}
Drag options to blanks, or click blank then click option'
A'DB_NAME'
B'DB_USER'
C'DB_PASSWORD'
D'DATABASE'
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect or inconsistent environment variable names.
Forgetting to put variable names in quotes.

Practice

(1/5)
1. Why is it recommended to use environment variables for secrets in a Django project?
easy
A. To keep sensitive information out of the code and version control
B. To make the code run faster
C. To avoid writing settings.py file
D. To automatically generate secret keys

Solution

  1. Step 1: Understand the purpose of environment variables

    Environment variables store sensitive data outside the code, so secrets are not exposed in files or repositories.
  2. Step 2: Recognize the security benefit

    Keeping secrets out of code prevents accidental leaks when sharing or publishing code.
  3. Final Answer:

    To keep sensitive information out of the code and version control -> Option A
  4. Quick Check:

    Secrets outside code = safer projects [OK]
Hint: Secrets belong outside code, use env vars [OK]
Common Mistakes:
  • Thinking env vars speed up code
  • Believing env vars replace settings.py
  • Assuming env vars auto-generate secrets
2. Which of the following is the correct way to read an environment variable named DJANGO_SECRET_KEY in Django's settings.py?
easy
A. secret_key = os.getenv('DJANGO_SECRET_KEY')
B. secret_key = os.environ['DJANGO_SECRET_KEY']()
C. secret_key = getenv.os('DJANGO_SECRET_KEY')
D. secret_key = os.get('DJANGO_SECRET_KEY')

Solution

  1. Step 1: Recall correct syntax for environment variable access

    In Python, os.getenv('VAR_NAME') safely reads environment variables.
  2. Step 2: Check each option for syntax correctness

    secret_key = os.getenv('DJANGO_SECRET_KEY') uses correct syntax. secret_key = os.environ['DJANGO_SECRET_KEY']() wrongly calls os.environ as a function. secret_key = getenv.os('DJANGO_SECRET_KEY') reverses function and module. secret_key = os.get('DJANGO_SECRET_KEY') uses a non-existent method.
  3. Final Answer:

    secret_key = os.getenv('DJANGO_SECRET_KEY') -> Option A
  4. Quick Check:

    Use os.getenv('VAR') to read env vars [OK]
Hint: Use os.getenv('VAR_NAME') to read env vars [OK]
Common Mistakes:
  • Calling os.environ like a function
  • Swapping function and module names
  • Using non-existent os.get method
3. Given this code snippet in settings.py:
import os
SECRET_KEY = os.getenv('DJANGO_SECRET_KEY', 'defaultkey')
print(SECRET_KEY)
What will be printed if the environment variable DJANGO_SECRET_KEY is not set?
medium
A. An empty string will be printed
B. An error will occur because the variable is missing
C. None will be printed
D. The string 'defaultkey' will be printed

Solution

  1. Step 1: Understand os.getenv default parameter

    If the environment variable is missing, os.getenv returns the default value provided as the second argument.
  2. Step 2: Apply to given code

    Since DJANGO_SECRET_KEY is not set, os.getenv returns 'defaultkey', which is printed.
  3. Final Answer:

    The string 'defaultkey' will be printed -> Option D
  4. Quick Check:

    Missing env var returns default value [OK]
Hint: os.getenv returns default if env var missing [OK]
Common Mistakes:
  • Expecting error if env var missing
  • Thinking None is returned without default
  • Assuming empty string is returned
4. You wrote this in settings.py:
import os
SECRET_KEY = os.getenv(DJANGO_SECRET_KEY)
But when running the server, you get a NameError. What is the problem?
medium
A. SECRET_KEY must be set manually, not from env vars
B. DJANGO_SECRET_KEY should be a string in quotes
C. os.getenv cannot be used in settings.py
D. You forgot to import dotenv

Solution

  1. Step 1: Identify the cause of NameError

    NameError means the name DJANGO_SECRET_KEY is not defined as a variable in the code.
  2. Step 2: Correct usage of os.getenv

    Environment variable names must be passed as strings, so it should be os.getenv('DJANGO_SECRET_KEY').
  3. Final Answer:

    DJANGO_SECRET_KEY should be a string in quotes -> Option B
  4. Quick Check:

    Env var names need quotes in os.getenv [OK]
Hint: Put env var names in quotes for os.getenv [OK]
Common Mistakes:
  • Passing env var name without quotes
  • Thinking os.getenv is disallowed in settings.py
  • Assuming dotenv import is mandatory
5. You want to securely manage different secret keys for development and production in Django using environment variables. Which approach is best?
hard
A. Hardcode the production secret key in settings.py and use a dummy key for development
B. Store all secrets in a JSON file inside the project and read it in settings.py
C. Set DJANGO_SECRET_KEY differently in each environment and read it with os.getenv('DJANGO_SECRET_KEY') in settings.py
D. Use the same secret key for all environments to avoid confusion

Solution

  1. Step 1: Understand environment-specific secrets

    Each environment (development, production) should have its own secret key to keep them isolated and secure.
  2. Step 2: Use environment variables for flexibility

    Setting DJANGO_SECRET_KEY differently in each environment and reading it via os.getenv allows safe, flexible secret management without code changes.
  3. Final Answer:

    Set DJANGO_SECRET_KEY differently in each environment and read it with os.getenv('DJANGO_SECRET_KEY') in settings.py -> Option C
  4. Quick Check:

    Env vars per environment keep secrets safe and flexible [OK]
Hint: Use env vars per environment for secrets [OK]
Common Mistakes:
  • Hardcoding secrets in code
  • Sharing same secret across environments
  • Storing secrets in project files
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard