python-3.x - 如何使 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"
它工作如何在不使用服务器的情况下完成这项工作
解决方案
静态文件(您的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 应用程序处理的情况下永远不会到达浏览器。
推荐阅读
- c# - 实体框架崩溃而不是使用 .NET 5 为重复记录引发异常
- kubernetes - 停止部署错误 Kubernetes 环境的方法
- java - 如何将两个矩阵相乘,一个 2D 乘以一个 1D?
- git - 如何将 msys2 与 git 分开运行?
- javascript - 如何制作用于创建二维类型对象数组的单线器?
- sql-server - 在 Visual Studio 中添加与服务器资源管理器的连接时用户登录失败
- powershell - 使用 Powershell 增加构建版本
- unity3d - 撞到东西后如何保持同样的速度?(统一二维)
- python - 创建 gensim 字典时添加进度条(详细)
- vcf-variant-call-format - 如何在没有任何分隔符的情况下分隔连续的字符串?