web-dev-qa-db-fra.com

Comment définir l'image d'arrière-plan sur les modèles Flask?

Mon image de fond fonctionne uniquement pour ce modèle qui a @ app.route ('/').

 <header class="intro-header" style="background-image: url('static/img/home.jpg')">

Cela fonctionne parfaitement bien lorsque:

@app.route('/')
def home():
    return render_template('post.html')

Tout fonctionne. J'ai compris:

127.0.0.1 - - [19/Sep/2016 21:07:11] "GET /static/img/home.jpg HTTP/1.1" 304 

Mais quand j'utilise le même modèle avec:

@app.route('/post/')
def post():
     return render_template('post.html')

J'ai compris:

127.0.0.1 - - [19/Sep/2016 21:15:23] "GET /post/static/img/home.jpg HTTP/1.1" 404 -                                                                          

Et l'image d'arrière-plan est vide.

11
Yakuzhy

C'est un problème simple qui peut être résolu par Flask documentation

Quoi qu'il en soit, vous devez utiliser quelque chose comme ça dans votre modèle:

background-image: url({{ url_for('static', filename='img/home.jpg') }})

mais si vous ne voulez pas utiliser Flask utilisent:

url('/static/img/home.jpg')

ou utilisez un autre serveur Web au lieu de flask serveur Web par défaut pour vos fichiers comme Apache et accès via http://yoursite/static/img/home.jpg

18
Hamed Mah

Les URL partielles sont interprétées par rapport à la source de la feuille de style, et non par rapport au document - w3 CSS

Cela signifie que vous devez modifier légèrement votre url(), pour inclure le premier /.

"background-image: url('/static/img/home.jpg')"
4
Andy