2016-09-19 29 views
7

Arka plan resmim sadece @ app.route ('/') içeren bu şablon için geçerlidir.Flask Şablonlarında arka plan görüntüsü nasıl ayarlanır?

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

Her şey çalışır:

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

Bu zaman mükemmel çalışıyor. Ben bu olsun:

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

Ama aynı şablonu kullanırken:

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

Ve background-image boştur:

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

Ben bu olsun.

+0

Siteye göreli bağlantı verin: 'url (/ static/...)' – hjpotter92

cevap

11

This is a simple problem can solved by Flask documentation

, şablonunuzda böyle bir şey kullanmalısınız

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

veya Apache ve ac gibi dosyalarınız için flask varsayılan web sunucusu yerine başka bir web sunucusu kullanın ile ilişkilendirme http://yoursite/static/img/home.jpg

1

Kısmi URL'ler belgeye göreceli değil stil sayfasının kaynağına göre yorumlanır - w3 CSS

Bu lider / içerecek şekilde, sizin url() biraz değiştirmek gerektiği anlamına gelir.

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

ancak Şişesi yöntemleri kullanmak kullanmak istemiyorsanız: Neyse

"background-image: url('/static/img/home.jpg')" 
İlgili konular