I'm using a web server on PythonAnywhere to run a Flask application. All I'm looking to do is randomly output a gif from a list of URLs. I'm looking to utilize the requests library, and I suspect I need the render_template in order to actually pass the image over. I have been dealing with either view function TypeErrors or outputs of plain text to a URL. I've also incorporated PIL and shutil once or twice but to no functional success.

from flask import Flask, render_template import random import requests app = Flask(__name__) WELCOME_LIST = [ ' ' ' ' ' ' ' ' ' ' ' ' ] @app.route('/') def obtainGif(): gif = random.choice(WELCOME_LIST) response = requests.get(gif) return response.raw @app.route('/join') def output(): finalize = obtainGif return render_template('home.html', finalize=finalize) if __name__ == '__main__': app.run(host='0.0.0.0') 
0

2 Answers

Use the send_file method.

from flask import Flask, render_template, send_file def obtainGif(): gif = random.choice(WELCOME_LIST) response = requests.get(gif, stream=True) return send_file(response.raw, mimetype='image/gif') 

You can use {{ variable }} anywhere in your template, not just in the HTML part.

 def output(): gif = random.choice(WELCOME_LIST) return render_template('home.html', gif=gif) 

in the home.html file add a script tag in which you are capturing this passed data

<script> let gif= {{gif|safe}}; </script> 

At this point you have the GIF URL inside your java-script code from where you can edit the HTML part of your code to add this GIF inside the <img> tags