Bird
Raised Fist0
Djangoframework~20 mins

WhiteNoise for static files in Django - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
WhiteNoise Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
How does WhiteNoise serve static files in Django?
When using WhiteNoise in a Django project, what is the main way it serves static files?
AIt serves static files directly from the Django development server without needing a separate web server.
BIt requires configuring Nginx or Apache to serve static files separately.
CIt uploads static files to a cloud storage service automatically.
DIt disables static file serving and expects the browser to cache files permanently.
Attempts:
2 left
💡 Hint
Think about how WhiteNoise simplifies static file serving in production.
📝 Syntax
intermediate
2:00remaining
Correct way to add WhiteNoise middleware in Django settings
Which option shows the correct way to add WhiteNoise middleware in the Django MIDDLEWARE list?
AWhiteNoise middleware should be added inside INSTALLED_APPS, not MIDDLEWARE.
B'whitenoise.middleware.WhiteNoiseMiddleware' should be added at the bottom of the MIDDLEWARE list.
C'whitenoise.middleware.WhiteNoiseMiddleware' should be added at the top of the MIDDLEWARE list.
D'django.middleware.security.SecurityMiddleware' should be replaced by 'whitenoise.middleware.WhiteNoiseMiddleware'.
Attempts:
2 left
💡 Hint
Middleware order matters for WhiteNoise to work properly.
🔧 Debug
advanced
3:00remaining
Why are static files not served with WhiteNoise in production?
Given this Django production setup with WhiteNoise configured, static files are not loading. What is the most likely cause?
Django
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    # other middleware
]

STATIC_ROOT = '/var/www/static/'

# collectstatic has been run

# DEBUG = False
AWhiteNoise middleware is placed after SecurityMiddleware, which is incorrect.
BSTATICFILES_STORAGE is not set to 'whitenoise.storage.CompressedManifestStaticFilesStorage'.
CDEBUG is set to True, so WhiteNoise does not serve static files.
DSTATIC_ROOT is missing trailing slash, causing path errors.
Attempts:
2 left
💡 Hint
Check if static files are compressed and cached properly in production.
state_output
advanced
2:30remaining
What happens when you run collectstatic with WhiteNoise?
After configuring WhiteNoise and running 'python manage.py collectstatic', what is the expected state of the static files?
AStatic files are copied to STATIC_ROOT with compressed and hashed filenames for caching.
BStatic files remain in their original app directories without changes.
CStatic files are uploaded to a CDN automatically.
DStatic files are deleted from the project to save space.
Attempts:
2 left
💡 Hint
Think about how WhiteNoise helps with caching static files.
🧠 Conceptual
expert
3:00remaining
Why choose WhiteNoise over a separate static file server?
What is the main advantage of using WhiteNoise to serve static files in a Django app compared to using a separate web server like Nginx?
AIt automatically scales static file serving across multiple servers without extra setup.
BIt encrypts static files during transfer for better security.
CIt improves static file delivery speed beyond what Nginx can provide.
DIt simplifies deployment by removing the need to configure and maintain a separate static file server.
Attempts:
2 left
💡 Hint
Think about deployment complexity and maintenance.

Practice

(1/5)
1. What is the main purpose of using WhiteNoise in a Django project?
easy
A. To handle user authentication and sessions
B. To manage database migrations automatically
C. To serve static files directly without needing a separate web server
D. To optimize Django's template rendering speed

Solution

  1. Step 1: Understand WhiteNoise's role

    WhiteNoise is designed to serve static files like CSS and JavaScript directly from Django without needing extra servers like Nginx.
  2. Step 2: Compare with other options

    Other options relate to database, authentication, or templates, which are unrelated to WhiteNoise's purpose.
  3. Final Answer:

    To serve static files directly without needing a separate web server -> Option C
  4. Quick Check:

    WhiteNoise serves static files = A [OK]
Hint: WhiteNoise is about static files, not databases or auth [OK]
Common Mistakes:
  • Confusing WhiteNoise with database or auth tools
  • Thinking WhiteNoise speeds up templates
  • Assuming WhiteNoise manages migrations
2. Which of the following is the correct way to add WhiteNoise middleware in Django's settings.py?
easy
A. "MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware'] + MIDDLEWARE"
B. "MIDDLEWARE = MIDDLEWARE + ['whitenoise.middleware.WhiteNoiseMiddleware']"
C. "MIDDLEWARE = ['whitenoise.middleware.WhiteNoiseMiddleware'] + MIDDLEWARE"
D. "MIDDLEWARE = ['whitenoise.middleware.WhiteNoiseMiddleware']"

Solution

  1. Step 1: Identify middleware order

    WhiteNoise middleware should be placed just after SecurityMiddleware to work properly.
  2. Step 2: Check the options

    "MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware'] + MIDDLEWARE" correctly adds WhiteNoise after SecurityMiddleware and before other middleware.
  3. Final Answer:

    "MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware'] + MIDDLEWARE" -> Option A
  4. Quick Check:

    WhiteNoise after SecurityMiddleware = A [OK]
Hint: WhiteNoise goes right after SecurityMiddleware in MIDDLEWARE list [OK]
Common Mistakes:
  • Adding WhiteNoise at the end of MIDDLEWARE
  • Replacing entire MIDDLEWARE with only WhiteNoise
  • Adding WhiteNoise before SecurityMiddleware
3. Given this settings.py snippet:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
What happens when you run python manage.py collectstatic?
medium
A. Static files are collected but not compressed or hashed
B. Static files are collected and compressed with hashed names for caching
C. Static files are ignored and not collected
D. An error occurs because the storage class is invalid

Solution

  1. Step 1: Understand CompressedManifestStaticFilesStorage

    This storage compresses static files and adds hashes to filenames for better caching.
  2. Step 2: Effect of collectstatic

    Running collectstatic collects all static files, compresses them, and renames with hashes.
  3. Final Answer:

    Static files are collected and compressed with hashed names for caching -> Option B
  4. Quick Check:

    CompressedManifestStaticFilesStorage compresses and hashes = C [OK]
Hint: CompressedManifestStaticFilesStorage compresses and hashes files on collectstatic [OK]
Common Mistakes:
  • Thinking files are not collected
  • Assuming no compression or hashing happens
  • Believing the storage class causes errors
4. You added WhiteNoise middleware but your static files are not served in production. Which is the most likely cause?
medium
A. You did not install Django
B. You added WhiteNoise middleware at the end of the MIDDLEWARE list
C. You set DEBUG = True in production
D. You forgot to run python manage.py collectstatic

Solution

  1. Step 1: Check static files preparation

    WhiteNoise serves static files from the collected directory, so collectstatic must be run.
  2. Step 2: Analyze other options

    Middleware order matters but usually won't stop serving completely; DEBUG True affects debug server; not installing Django is unrelated if app runs.
  3. Final Answer:

    You forgot to run python manage.py collectstatic -> Option D
  4. Quick Check:

    Missing collectstatic = D [OK]
Hint: Always run collectstatic before deploying with WhiteNoise [OK]
Common Mistakes:
  • Ignoring collectstatic step
  • Misplacing middleware but not running collectstatic
  • Confusing DEBUG setting with static serving
  • Assuming Django is not installed if app runs
5. You want to serve static files efficiently with WhiteNoise and also enable long-term caching. Which combination of settings is best?
hard
A. Add WhiteNoise middleware after SecurityMiddleware and set STATICFILES_STORAGE to 'whitenoise.storage.CompressedManifestStaticFilesStorage'
B. Add WhiteNoise middleware at the start of MIDDLEWARE and set STATICFILES_STORAGE to 'django.contrib.staticfiles.storage.StaticFilesStorage'
C. Do not add WhiteNoise middleware and set STATICFILES_STORAGE to 'whitenoise.storage.CompressedStaticFilesStorage'
D. Add WhiteNoise middleware after SessionMiddleware and set STATICFILES_STORAGE to 'django.contrib.staticfiles.storage.StaticFilesStorage'

Solution

  1. Step 1: Middleware placement for WhiteNoise

    WhiteNoise middleware must be placed immediately after SecurityMiddleware for proper static file serving.
  2. Step 2: Choosing STATICFILES_STORAGE for caching

    'CompressedManifestStaticFilesStorage' compresses files and adds hashes for long-term caching, which is best practice.
  3. Step 3: Evaluate other options

    Other options either place middleware incorrectly or use storage classes that don't support long-term caching well.
  4. Final Answer:

    Add WhiteNoise middleware after SecurityMiddleware and set STATICFILES_STORAGE to 'whitenoise.storage.CompressedManifestStaticFilesStorage' -> Option A
  5. Quick Check:

    Correct middleware order + caching storage = B [OK]
Hint: Middleware after SecurityMiddleware + CompressedManifestStaticFilesStorage for caching [OK]
Common Mistakes:
  • Placing middleware too early or late
  • Using default storage without hashing
  • Skipping middleware but setting storage
  • Using storage without compression or hashing