首页 > 解决方案 > 如何使 Flasks index.html 从文件夹中获取文件

问题描述

这是我的 python3 文件

from flask import Flask, render_template, request
from bs4 import BeautifulSoup
import os


app = Flask(__name__, template_folder="html/")

@app.route("/")
def index():
    return render_template("index.html")


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080, debug=True)

这是我的 index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<video width="320" height="240" controls>
  <source src="movie.mp4" type="video/mp4">
</video>
</body>
</html>

moive.mp4 与 index.html 位于同一文件夹中,但出现 404 错误,但当我将其更改为

src="/html/movie.mp4"

我得到 200 但是当我把它放在 http 服务器上然后使用时它仍然没有显示

src="http://192.168.0.17/movie.mp4"

它工作如何在不使用服务器的情况下完成这项工作

标签: python-3.xhttp

解决方案


静态文件(您的movie.mp4)应位于名为static/

在您的模板中创建链接:

<source src='{{ url_for("static", filename="movie.mp4") }}' type="video/mp4">

这将自动将 URL 呈现为:

/static/movies.mp4

moive.mp4 与 index.html 位于同一文件夹中

模板和静态文件不是一回事,因此不同目录的原因:

  • 模板由 python 应用程序加载并呈现以生成传递给浏览器的 HTML。
  • 静态文件直接提供。当您开始部署应用程序时,通常会有一个反向代理为这些服务提供服务,因此任何请求都/static不会到达应用程序服务器。

尽管模板文件通常具有html扩展名,但这些模板文件在没有先由 python 应用程序处理的情况下永远不会到达浏览器。


推荐阅读