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.
Réponses
Trop de publicités?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é ;)
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') }}
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)