2012-03-01 10 views
29

¿Es posible agregar más rutas estáticas para mi instancia local de Flask? Quiero tener la carpeta predeterminada static para almacenar archivos js/css/images para el sitio y otra carpeta, p. designs para mantener mis activos específicos. No quiero colocar la carpeta designs dentro de static si existe una solución mejor.Más de una ruta estática en la instancia de Flask local

Respuesta

31

He estado usando el enfoque siguiente:

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

La variable CUSTOM_STATIC_PATH se define en mi configuración.

Y en plantillas:

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

caveat.emptor - No estoy muy seguro si es seguro;)

+5

En mis ojos esta es la versión más personalizada pero debería utilizar 'werkzeug. utils.secure_filename' para verificar el nombre del archivo. – Jarus

+0

aclaración para cualquier persona que venga 'CUSTOM_STATIC_PATH' es la ruta real del nombre de la carpeta. no es una clave/variable especial ... que por alguna razón pensé que era. –

+0

Esto funcionó como un encanto, ¡gracias! –

26

Puede utilizar un modelo con su propio dir estática http://flask.pocoo.org/docs/blueprints/

Blueprint Plantilla

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

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