Home > Back-end >  Images are not loading for the static images folder in flask app after __init__.py setup
Images are not loading for the static images folder in flask app after __init__.py setup

Time:12-09

I have a flask app that I have build. The users can upload images through a form. When the user uploads an image, it will add the images to a folder website/static/images/. The files are saving correctly in the folder, but I am not able to display the images because of its location or some issue with the strucutre of folders.

this is the init.py:

from flask import Flask, session, redirect, url_for
from pymongo import MongoClient
from os import path, mkdir

client = MongoClient()
db = client.Contractor 

app = Flask(__name__, static_url_path='/static')
app.config['SECRET_KEY'] = 'eigeinsonriuosvnirosjvsoe' 
upload_folder = 'website/static/images/'
if not path.exists(upload_folder):
  mkdir(upload_folder)
app.config['MAX_CONTENT_LENGTH'] = 25 * 1024 * 1024
app.config['UPLOAD_FOLDER'] = upload_folder

This is where I am trying to retrieve them and display them to the user:

{% for photo in all_photos %}
    <div>
      <a>
        <img style="height: 250px;" src={{ url_for('static', filename=photo.filename ) }}/>
      </a>
      <p>{{ photo.image_name }}</p>
      <p>{{ photo.caption }}</p>
      <p>{{ photo.location }}</p>
    </div>
  {% endfor %}

I have tried the following:

<img style="height: 250px;" src={{ url_for('static', filename=photo.filename ) }}/>

and this

<img style="height: 250px;" src={{ url_for('static/images', filename=photo.filename ) }}/>

and this

<img style="height: 250px;" src={{ url_for('static/images/', filename=photo.filename ) }}/>

This is the error I keep getting when I try any variation:

werkzeug.routing.BuildError: Could not build url for endpoint 'static/images' with values ['filename']. Did you mean 'static' instead?

CodePudding user response:

Assuming that 'website' is the main dir in which your Flask application is set, and that you have a structure like this:

/website
  /static
     /images

then you should do this:

<img style="height: 250px;" src={{ url_for('static', filename='images/' photo.filename ) }}/>

CodePudding user response:

Try to delete the website folder and leave the static as the root folder. Flask searching for a static folder in the root directory where you should save your static files like images etc.

  • Related