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