[英]Using CSS Templates with Flask: Overriding “static system”
我剛剛開始使用Flask,我想知道在嘗試使用預制的CSS模板時,處理如何處理靜態文件的最佳方法是什么。
基本上,我下載了一個我喜歡從互聯網上下載的CSS模板,但是當我只是將文件拖到我的flask應用程序文件夾中時,由於CSS,JS和圖像文件不在靜態文件夾中,因此它們不起作用。
但是如果我將所有靜態文件移動到靜態文件夾中,那么我必須瀏覽所有代碼並更改鏈接URL,這非常耗時。
我正在使用的CSS模板具有index.html,該鏈接使用類似
<link rel = "stylesheet" href = "css/style.css" >
我已經在我的燒瓶應用程序中設置了static_folder = ""
和static_url_path = ""
,我已將下載的模板中的css,js和image文件夾移動到應用程序的基本文件夾中,但鏈接仍然無法正常工作。
有沒有更好的方法來處理使用premade CSS模板與燒瓶? 我可以覆蓋以某種方式將css和js以及圖像文件放在靜態文件夾中的需要嗎? 謝謝你的幫助!
(很抱歉打開這個舊帖子,但我正在尋找徽章:]
)
有幾種可能的解決方案,但我建議的是將文件style.css
移動到文件夾<server_root>/static/css/
。
然后創建燒瓶應用程序,例如app = Flask(__name__, static_url_path='')
,這意味着它仍然從static/
文件夾提供靜態文件,但是在路徑/
(因此<server_root>/static/css/style.css
是在/css/style.css
上/css/style.css
)。
使用此設置,您的鏈接href="/css/style.css"
將起作用。
但是,強烈建議在所有網址的代碼和模板中都使用flask.url_for('endpoint', param='value')
而不是/endpoint/url/value
(用{{ ... }}
包圍)-靜態文件( 'static', filename='css/style.css'
)和您自己的端點。 所以如果你的端點看起來像這樣,
@app.route('/some/path/<variable>')
def some_endpoint(variable):
# do something and return response...
...無論實際的URL( /some/path/something/
在這種情況下)是什么url_for('some_endpoint, variable='something')
你都可以使用url_for('some_endpoint, variable='something')
。 (經過測試的python 3.6.7; flask 1.0.2
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.