python - 在 Flask : Overriding "static system" 中使用 CSS 模板

标签 python html css flask

我刚开始使用 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/

相关文章:

python - Scrapy - 等待所有请求完成

javascript - 测试网络抓取工具的选择器

css - 奇怪的 CSS 修改 - :hover 中的意外边框底部值

Python:如何访问 YouTube 网页?

python - 在同一行中绘制 2 个 seaborn KDE 联合图

python - 使用正则表达式从字符串中删除单词

html - 将中心菜单与其内容对齐

javascript - 运行总计 - 购物车 - HTML/Javascript

html - Rails form_tag 未显示

jQuery 下拉菜单 - setTimeout 和 "this"