Bird
Raised Fist0
Flaskframework~20 mins

URL_for with static files in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Static File Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
1:30remaining
What URL does url_for('static', filename='style.css') generate?

In a Flask app, you use url_for('static', filename='style.css') inside a template. What URL will this produce by default?

A/style.css
B/static/style.css
C/staticfiles/style.css
D/assets/style.css
Attempts:
2 left
💡 Hint

Think about the default folder Flask uses for static files.

📝 Syntax
intermediate
1:30remaining
Which url_for call correctly references a static image?

Choose the correct Flask url_for syntax to get the URL for logo.png inside the static/images folder.

Aurl_for('static', filename='/images/logo.png')
Burl_for('static/images', filename='logo.png')
Curl_for('static', filename='images/logo.png')
Durl_for('static', 'images/logo.png')
Attempts:
2 left
💡 Hint

Remember the filename argument is a relative path inside the static folder.

🔧 Debug
advanced
2:00remaining
Why does url_for('static', filename='css/style.css') return 404?

You have a file at project/static/css/style.css. Your template uses url_for('static', filename='css/style.css') but the browser shows a 404 error. What is the most likely cause?

AThe static folder is renamed or moved, so Flask can't find the file.
BThe filename argument should not include subfolders like 'css/'.
CYou must use <code>url_for('static', filename='/css/style.css')</code> with a leading slash.
DFlask does not serve static files by default; you must add a route.
Attempts:
2 left
💡 Hint

Check if the static folder location matches Flask's configuration.

❓ state_output
advanced
1:30remaining
What is the output of this Flask template snippet?

Given this Flask template code:

<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">

And the app is running with default static folder, what will the rendered HTML look like?

A<link rel="stylesheet" href="/assets/css/main.css">
B<link rel="stylesheet" href="/css/main.css">
C<link rel="stylesheet" href="static/css/main.css">
D<link rel="stylesheet" href="/static/css/main.css">
Attempts:
2 left
💡 Hint

Remember how url_for builds URLs for static files.

🧠 Conceptual
expert
2:30remaining
How to serve static files from a custom folder using url_for?

You want Flask to serve static files from a folder named assets instead of the default static. Which setup and url_for usage is correct?

ASet <code>app = Flask(__name__, static_folder='assets')</code> and use <code>url_for('static', filename='file.js')</code>
BKeep default app and use <code>url_for('assets', filename='file.js')</code>
CSet <code>app = Flask(__name__, static_url_path='/assets')</code> and use <code>url_for('static', filename='file.js')</code>
DRename the folder to <code>static</code> and use <code>url_for('assets', filename='file.js')</code>
Attempts:
2 left
💡 Hint

Check Flask's static_folder parameter and how url_for references static files.

Practice

(1/5)
1. What is the main purpose of using url_for('static', filename='...') in a Flask app?
easy
A. To define a new route for dynamic pages
B. To create a new static file in the project folder
C. To generate the correct URL for static files like CSS or images
D. To run the Flask development server

Solution

  1. Step 1: Understand the role of url_for in Flask

    url_for is used to build URLs for routes or static files dynamically.
  2. Step 2: Recognize the use of 'static' endpoint

    Using url_for('static', filename='...') specifically generates the URL for static files like CSS, JavaScript, or images.
  3. Final Answer:

    To generate the correct URL for static files like CSS or images -> Option C
  4. Quick Check:

    url_for static files = generate URL [OK]
Hint: Remember: url_for('static', filename=...) builds static file URLs [OK]
Common Mistakes:
  • Thinking url_for creates files instead of URLs
  • Using url_for for running the server
  • Confusing static files with dynamic routes
2. Which of the following is the correct syntax to link a CSS file named style.css located in the static/css folder using url_for in a Flask template?
easy
A.
B.
C.
D.

Solution

  1. Step 1: Understand the folder structure for static files

    Static files are placed inside the static folder, so the path inside filename is relative to it.
  2. Step 2: Use correct relative path in filename

    The correct path is css/style.css without leading slash or extra folder names.
  3. Final Answer:

    <link href="{{ url_for('static', filename='css/style.css') }}" rel="stylesheet"> -> Option B
  4. Quick Check:

    Correct relative path in filename = [OK]
Hint: Use relative path inside static folder without leading slash [OK]
Common Mistakes:
  • Adding leading slash in filename path
  • Including 'static' folder name inside filename
  • Swapping folder and file names
3. Given this Flask template snippet:
<img src="{{ url_for('static', filename='images/logo.png') }}" alt="Logo">

What will be the rendered HTML if the app is running on http://localhost:5000?
medium
A.
B.
C.
D.

Solution

  1. Step 1: Understand what url_for returns for static files

    By default, url_for('static', filename='...') returns a relative URL starting with /static/.
  2. Step 2: Check the rendered HTML output

    The src attribute will be /static/images/logo.png, not the full URL with domain.
  3. Final Answer:

    <img src="/static/images/logo.png" alt="Logo"> -> Option A
  4. Quick Check:

    url_for static returns relative URL starting with /static/ [OK]
Hint: url_for static returns relative path starting with /static/ [OK]
Common Mistakes:
  • Expecting full URL with domain
  • Missing leading slash in URL
  • Using wrong folder path
4. You wrote this in your Flask template:
<script src="{{ url_for('static', filename='js/app.js') }}"></script>

But the browser shows a 404 error for the script file. What is the most likely cause?
medium
A. The filename argument should not include folder names
B. You forgot to import url_for in your Flask app
C. You should use url_for('app', filename='js/app.js') instead
D. The js/app.js file is missing from the static folder

Solution

  1. Step 1: Check the URL generated by url_for

    The syntax is correct, so the URL points to /static/js/app.js.
  2. Step 2: Verify the file exists in the static folder

    A 404 error means the file is not found at that location, so likely the file is missing or misplaced.
  3. Final Answer:

    The js/app.js file is missing from the static folder -> Option D
  4. Quick Check:

    404 error means missing static file [OK]
Hint: 404 on static means file missing or wrong path [OK]
Common Mistakes:
  • Changing the endpoint name from 'static'
  • Removing folder names from filename
  • Assuming url_for needs import in template
5. You want to serve a user-uploaded image stored in static/uploads/user1.png. You wrote this in your template:
<img src="{{ url_for('static', filename='uploads/user1.png') }}" alt="User Image">

Later, you move the uploads folder outside static for security. How can you still serve the image correctly?
hard
A. Create a new route that sends the file using send_from_directory from the uploads folder
B. Change url_for to url_for('uploads', filename='user1.png')
C. Move the uploads folder back inside static and keep using url_for('static')
D. Use url_for('static', filename='../uploads/user1.png') to go up one folder

Solution

  1. Step 1: Understand static folder limitations

    Flask only serves files inside the static folder automatically.
  2. Step 2: Use a custom route to serve files outside static

    To serve files outside static, define a route using send_from_directory to send files from the uploads folder.
  3. Final Answer:

    Create a new route that sends the file using send_from_directory from the uploads folder -> Option A
  4. Quick Check:

    Files outside static need custom route with send_from_directory [OK]
Hint: Serve files outside static with send_from_directory route [OK]
Common Mistakes:
  • Trying to use url_for with paths outside static
  • Using relative paths with ../ in filename
  • Assuming Flask serves all folders automatically
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