Search code examples
pythonhtmlflaskflash-message

python flask display image on a html page


I am trying to pass a filename of an image and render it on a template, Although I am passing the actual name through it does not display on the page

@app.route('/', methods=['GET','POST'])
@app.route('/start', methods=['GET','POST'])
def start():
person_to_show = 'tim'
profilepic_filename = os.path.join(people_dir, person_to_show, "img.jpg")
return render_template('start.html',profilepic_filename  =profilepic_filename )

For example: profilepic_filename = /data/tim/img.jpg I have tried

{{profilepic_filename}}
<img src="{{ url_for('data', filename='tim/img.jpg') }}"></img>

And I have also tried

<img src="{{profilepic_filename}}"></img>

Neither of which worked


Solution

  • I have created people_photo in static folder and placed an image named shovon.jpg. From the application.py I passed the image as variable to template and showed it using img tag in the template.

    In application.py:

    from flask import Flask, render_template
    import os
    
    PEOPLE_FOLDER = os.path.join('static', 'people_photo')
    
    app = Flask(__name__)
    app.config['UPLOAD_FOLDER'] = PEOPLE_FOLDER
    
    @app.route('/')
    @app.route('/index')
    def show_index():
        full_filename = os.path.join(app.config['UPLOAD_FOLDER'], 'shovon.jpg')
        return render_template("index.html", user_image = full_filename)
    

    In index.html:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Index</title>
    </head>
    <body>
        <img src="{{ user_image }}" alt="User Image">
    </body>
    </html>
    

    Output:

    enter image description here