簡體   English   中英

在Flask中使用CSS模板:覆蓋“靜態系統”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM