我刚开始使用 Flask,我想知道最好的方法是什么 处理 Flask 在尝试使用预制 CSS 模板时如何处理静态文件。
基本上,我已经从互联网上下载了一个我喜欢的 CSS 模板,但是如果我只是将文件拖到我的 flask 应用程序文件夹中,CSS、JS 和图像文件将无法工作,因为它们不在静态目录中文件夹。
但是如果我将所有静态文件都移动到静态文件夹中,那么我必须遍历所有代码并更改链接 url,这非常耗时。
我正在使用的 CSS 模板有一个使用类似链接的 index.html
<link rel = "stylesheet" href = "css/style.css" >
我已经设置了 static_folder = ""
和我的 Flask 应用程序中的 static_url_path = ""
并且我已将下载的模板中的 css、js 和图像文件夹移动到应用程序的基本文件夹中,但链接仍然无效。
有没有更好的方法来处理在 Flask 中使用预制 CSS 模板?我可以以某种方式覆盖将 css 和 js 以及图像文件放在静态文件夹中的需要吗?感谢您的帮助!
最佳答案
(抱歉打开这个旧帖子,但我正在寻找徽章 :]
)
有几种可能的解决方案,但我推荐的一种是移动文件 style.css
到文件夹 <server_root>/static/css/
.
然后像app = Flask(__name__, static_url_path='')
一样创建 flask 应用程序,这意味着它仍然提供来自 static/
的静态文件文件夹,但在路径 /
上(所以 <server_root>/static/css/style.css
在 /css/style.css
上提供)。
通过此设置,您的链接 href="/css/style.css"
将工作。
不过,强烈推荐使用flask.url_for('endpoint', param='value')
而不是 /endpoint/url/value
在所有 URL 的代码和模板(用 {{ ... }}
包围)中 - 静态文件('static', filename='css/style.css'
)和您自己的端点。因此,如果您的端点看起来像这样,
@app.route('/some/path/<variable>')
def some_endpoint(variable):
# do something and return response...
...你可以使用url_for('some_endpoint, variable='something')
无论实际 URL(在本例中为 /some/path/something/
)是什么。 (已测试 python 3.6.7; flask 1.0.2
)
关于python - 在 Flask : Overriding "static system" 中使用 CSS 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36171354/