47 votes

Plus d'un chemin statique dans l'instance Flask locale

Est-il possible d'ajouter plus de chemins statiques pour mon instance de dev Flask locale ? Je veux avoir le static pour stocker les fichiers js/css/images pour le site et un autre dossier, par exemple designs pour conserver mes actifs spécifiques. Je ne veux pas lieu designs dossier dans static s'il y a une meilleure solution existe.

48voto

plaes Points 8535

J'ai utilisé l'approche suivante:

 # Custom static data
@app.route('/cdn/<path:filename>')
def custom_static(filename):
    return send_from_directory(app.config['CUSTOM_STATIC_PATH'], filename)

La CUSTOM_STATIC_PATH est définie dans ma configuration.

Et dans les modèles :

 {{ url_for('custom_static', filename='foo') }}

Caveat emptor - Je ne suis pas vraiment sûr que ce soit sécurisé ;)

45voto

estin Points 1290

Vous pouvez utiliser un Blueprint avec son propre répertoire statique http://flask.pocoo.org/docs/blueprints/

Plan

 blueprint = Blueprint('site', __name__, static_url_path='/static/site', static_folder='path/to/files')
app.register_blueprint(blueprint)

Modèle

 {{ url_for('site.static', filename='filename') }}

2voto

Prasad Points 316

Si j'ai des images stockées dans le répertoire d'images comme suit

 images/
  dir1/
    image1.jpg
  dir2/
    image2.jpg

alors nous pouvons accéder à ces images avec l'url suivante : http://localhost:5000/images/dir1/image1.jpg à l'aide du code ci-dessous

 from flask import Flask, send_from_directory


app = Flask(__name__, static_folder='main_static_dir')


@app.route('/images/<path:filename>')
def base_static(filename):
    return send_from_directory(app.root_path + '/images/', filename)


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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X