📅  最后修改于: 2023-12-03 15:22:46.705000             🧑  作者: Mango
在Web开发过程中,我们通常需要加载静态资源,如CSS、JavaScript、图片等文件。在Python中,我们可以使用Flask框架提供的url_for
和static
函数来加载静态资源。
url_for
函数url_for
函数用于生成指定视图函数的URL,它接受视图函数的名称和参数作为参数。当我们使用url_for
函数加载静态资源时,它会根据应用程序的配置和static_url_path
选项的值来生成资源的URL。
from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index():
css_url = url_for('static', filename='css/style.css')
js_url = url_for('static', filename='js/main.js')
img_url = url_for('static', filename='img/logo.png')
return f'''
<html>
<head>
<link rel="stylesheet" href="{css_url}">
<script src="{js_url}"></script>
</head>
<body>
<img src="{img_url}">
</body>
</html>
'''
if __name__ == '__main__':
app.run()
在上面的示例代码中,我们使用url_for
函数生成style.css
、main.js
和logo.png
的URL,然后将这些URL用于HTML中的link
、script
和img
标签。
static
函数static
函数用于直接加载静态资源,它的参数是资源的相对路径(相对于static_url_path
选项的值)。与url_for
函数不同的是,static
函数不会返回URL,而是直接返回资源的内容。
from flask import Flask, render_template_string, static
app = Flask(__name__)
@app.route('/')
def index():
css_content = static('css/style.css')
js_content = static('js/main.js')
img_content = static('img/logo.png')
return render_template_string(f'''
<html>
<head>
<style>{css_content}</style>
<script>{js_content}</script>
</head>
<body>
<img src="data:image/png;base64,{img_content}" alt="Logo">
</body>
</html>
''')
if __name__ == '__main__':
app.run()
在上面的示例代码中,我们使用static
函数直接加载style.css
、main.js
和logo.png
的内容,然后将这些内容用于HTML中的style
、script
和img
标签。
在Python中,我们可以使用Flask框架提供的url_for
和static
函数来加载静态资源。url_for
函数用于生成资源的URL,适用于大部分情况;static
函数用于直接加载资源的内容,适用于一些特殊情况。