繁体   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