Bird
Raised Fist0
Flaskframework~5 mins

Static folder configuration in Flask

Choose your learning style10 modes available
Introduction

Static folder configuration tells Flask where to find files like images, CSS, and JavaScript that do not change. This helps your web app show styles and pictures correctly.

You want to add a logo or image to your website.
You need to include CSS files to style your pages.
You want to add JavaScript files for interactive features.
You want to organize your static files in a custom folder.
You want Flask to serve static files from a different folder than the default.
Syntax
Flask
app = Flask(__name__, static_folder='folder_name', static_url_path='/url_path')

static_folder sets the folder where static files live (default is 'static').

static_url_path sets the URL path to access static files (default is '/static').

Examples
This uses the default settings. Put your files in a folder named 'static'.
Flask
app = Flask(__name__)
# Uses default 'static' folder and '/static' URL path
Change the folder name to 'assets' but keep the URL path as '/static'.
Flask
app = Flask(__name__, static_folder='assets')
# Static files are in 'assets' folder but URL path stays '/static'
Change both the folder and the URL path for static files.
Flask
app = Flask(__name__, static_folder='public', static_url_path='/files')
# Static files in 'public' folder, accessed via '/files' URL
Sample Program

This Flask app uses a custom static folder named 'my_static' and serves static files at '/staticfiles'. The HTML page links a CSS file and an image from this folder.

Flask
from flask import Flask

app = Flask(__name__, static_folder='my_static', static_url_path='/staticfiles')

@app.route('/')
def home():
    return '''
    <html>
      <head>
        <link rel="stylesheet" href="/staticfiles/style.css">
      </head>
      <body>
        <h1>Welcome!</h1>
        <img src="/staticfiles/logo.png" alt="Logo">
      </body>
    </html>
    '''

if __name__ == '__main__':
    app.run(debug=True)
OutputSuccess
Important Notes

Make sure the folder you set for static_folder exists and contains your static files.

The static_url_path is the URL prefix you use in your HTML to access static files.

If you don't set these parameters, Flask uses 'static' folder and '/static' URL by default.

Summary

Static folder configuration tells Flask where to find and how to serve static files.

You can customize the folder name and URL path for static files.

This helps organize your files and control how users access images, CSS, and JavaScript.

Practice

(1/5)
1. What is the default folder name Flask uses to serve static files like images and CSS?
easy
A. assets
B. static
C. public
D. files

Solution

  1. Step 1: Recall Flask default static folder

    Flask by default looks for a folder named static in your project to serve static files.
  2. Step 2: Confirm other options are not defaults

    Folders like assets, public, or files are common in other frameworks but not Flask's default.
  3. Final Answer:

    static -> Option B
  4. Quick Check:

    Default static folder = static [OK]
Hint: Remember Flask uses 'static' folder by default for static files [OK]
Common Mistakes:
  • Confusing 'assets' or 'public' as default static folder
  • Thinking Flask serves static files from root directory
  • Assuming no default static folder exists
2. Which of the following is the correct way to change the static folder name to 'assets' when creating a Flask app?
easy
A. app = Flask(__name__, static='assets')
B. app = Flask(static_folder='assets')
C. app = Flask(__name__, static_folder='assets')
D. app = Flask(__name__, static_url_path='assets')

Solution

  1. Step 1: Identify correct Flask constructor parameter

    The parameter to change the static folder name is static_folder, used as Flask(__name__, static_folder='assets').
  2. Step 2: Check other options for errors

    static='assets' is invalid, missing __name__ is wrong, and static_url_path changes URL path, not folder name.
  3. Final Answer:

    app = Flask(__name__, static_folder='assets') -> Option C
  4. Quick Check:

    Change folder with static_folder param [OK]
Hint: Use static_folder param in Flask constructor to rename folder [OK]
Common Mistakes:
  • Using static instead of static_folder
  • Omitting __name__ argument
  • Confusing static_url_path with static_folder
3. Given this Flask app code:
app = Flask(__name__, static_folder='assets', static_url_path='/content')

# Assume assets folder contains image.png

# What URL path serves image.png?
medium
A. /content/image.png
B. /assets/image.png
C. /static/image.png
D. /image.png

Solution

  1. Step 1: Understand static_folder and static_url_path roles

    static_folder='assets' sets the folder name, static_url_path='/content' sets the URL prefix to access static files.
  2. Step 2: Determine URL to access image.png

    Since URL path is set to /content, the image is served at /content/image.png.
  3. Final Answer:

    /content/image.png -> Option A
  4. Quick Check:

    URL path = static_url_path value [OK]
Hint: URL uses static_url_path, not static_folder name [OK]
Common Mistakes:
  • Assuming URL matches folder name
  • Using default /static URL path despite override
  • Confusing folder name with URL path
4. What is wrong with this Flask app code if static files are not served correctly?
app = Flask(__name__, static_folder='staticfiles')

# staticfiles folder exists with CSS files

# Trying to access /static/style.css returns 404
medium
A. The URL path /static does not match the static_folder name 'staticfiles'
B. The static_folder parameter should be set to 'static', not 'staticfiles'
C. The static_url_path should be set to '/staticfiles' to match folder name
D. Flask does not serve static files automatically

Solution

  1. Step 1: Check static_folder and URL path mismatch

    Flask serves static files at URL path /static by default, but folder is renamed to staticfiles.
  2. Step 2: Understand URL path must match static_url_path

    Since static_url_path is not set, Flask expects files at /static URL but folder is staticfiles, causing 404.
  3. Final Answer:

    The URL path /static does not match the static_folder name 'staticfiles' -> Option A
  4. Quick Check:

    URL path must match static_folder or static_url_path [OK]
Hint: Match static_url_path with static_folder or set both explicitly [OK]
Common Mistakes:
  • Assuming folder rename auto-updates URL path
  • Not setting static_url_path when changing folder
  • Believing Flask never serves static files automatically
5. You want to serve static files from a folder named 'public_assets' but keep the URL path as '/static'. Which Flask app configuration achieves this?
hard
A. app = Flask(__name__, static_url_path='/static')
B. app = Flask(__name__, static_folder='static', static_url_path='/public_assets')
C. app = Flask(__name__, static_folder='public_assets')
D. app = Flask(__name__, static_folder='public_assets', static_url_path='/static')

Solution

  1. Step 1: Set static_folder to 'public_assets'

    To serve files from 'public_assets' folder, set static_folder='public_assets'.
  2. Step 2: Keep URL path as '/static'

    Set static_url_path='/static' to keep URL path unchanged.
  3. Step 3: Verify other options

    app = Flask(__name__, static_folder='static', static_url_path='/public_assets') swaps folder and URL path, C uses default URL path '/static', D misses folder setting.
  4. Final Answer:

    app = Flask(__name__, static_folder='public_assets', static_url_path='/static') -> Option D
  5. Quick Check:

    Folder and URL path set explicitly [OK]
Hint: Set static_folder and static_url_path explicitly to control folder and URL [OK]
Common Mistakes:
  • Swapping folder and URL path values
  • Not setting static_url_path when folder changes
  • Assuming default URL path changes with folder
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