📜  Flask¢¢â€“静态文件(1)

📅  最后修改于: 2023-12-03 15:15:05.938000             🧑  作者: Mango

Flask - 静态文件

Flask 是一个基于 Python 的轻量级 Web 开发框架,它提供了高效简洁的方式来构建 Web 应用程序。其中一个重要的功能就是 Flask 的静态文件管理。

静态文件是指在 Web 应用中不会动态生成内容的文件,如 CSS、JavaScript、图像等。这些文件通常用于提供网页的样式和交互性,以及处理客户端的请求。

静态文件目录

在 Flask 中,默认的静态文件目录是 static 文件夹。你可以在你的 Flask 应用的根目录中创建一个 static 文件夹,并将你的静态文件放置在其中。

- your_flask_app/
  - app.py
  - static/
    - css/
      - styles.css
    - js/
      - script.js
    - images/
      - logo.png
URL 路径

当你在 Flask 中定义路由时,可以使用特殊的 URL 路径来引用静态文件。静态文件的 URL 路径格式如下:/static/<filename>

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return app.send_static_file('index.html')

if __name__ == '__main__':
    app.run()

在上面的例子中,index.html 是位于 static 文件夹下的静态文件。通过使用 app.send_static_file 方法,我们可以将该文件发送回客户端。

URL for 静态文件

为了更加灵活地引用静态文件,在模板中可以使用 url_for 方法生成静态文件的 URL。

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
    <script src="{{ url_for('static', filename='js/script.js') }}"></script>
</head>
<body>
    <img src="{{ url_for('static', filename='images/logo.png') }}" alt="Logo">
</body>
</html>

url_for('static', filename='css/styles.css') 会生成一个形如 /static/css/styles.css 的静态文件URL,然后我们可以将它用作链接、脚本或图像的 SRC 属性。

静态文件的缓存

Flask 提供了内置的缓存控制功能,可以确保客户端在静态文件更新后能够及时获取到新的版本。

在开发环境下,默认情况下每次请求都会重新发送静态文件。但在生产环境中,你应该启用缓存控制功能,以减少网络请求的次数。

from flask import Flask

app = Flask(__name__)

# 静态文件缓存过期时间为 1 小时
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 3600

if __name__ == '__main__':
    app.run()

通过设置 SEND_FILE_MAX_AGE_DEFAULT 配置项,你可以指定静态文件的缓存过期时间(以秒为单位)。

总结

Flask 提供了灵活而强大的静态文件管理功能,使开发者能够轻松地为 Web 应用添加样式、脚本和图像。通过合理地使用静态文件,你能够提升用户体验,提供更加丰富、动态的网页内容。