【Python】【Flask】Flask 后台发送html页面多种方法
1、使用模板:
@app.route('/') def home():return render_template("homepage.html")#homepage.html在templates文件夹下
2、使用 send_from_directory
root = os.path.join(os.path.dirname(os.path.abspath(__file__)), "html")#html是个文件夹@app.route('/') def home():return send_from_directory(root, "homepage.html")#homepage.html在html文件夹下
3、使用 app.send_static_file
app = Flask(__name__,static_url_path='')#修改静态文件夹的目录@app.route('/') def home():return app.send_static_file('homepage.html')#homepage.html在static文件夹下
4、flask 调用 css文件
app = Flask(__name__,static_url_path='') @app.route('/') def home(): return app.send_static_file('html/homepage.html')
<link rel="stylesheet" type="text/css" href="../css/homepagestyle.css">#html里面引用css
文件夹结构目录
注意:css文件必须在静态文件夹下,否则css调用不了
以下内容来自 https://www.cnblogs.com/shengulong/p/7106166.html 只为记录下
flask中的g、add_url_rule、send_from_directory、static_url_path、static_folder的用法
一:Flask中的g对象
Flask中的g对象是个很好的东西,主要用于在一个请求的过程中共享数据。可以随意给g对象添加属性来保存数据,非常的方便,下面的代码是一个使用g对象的例子。下面的这个例子会使用random随机产生一个0~9的整数,并使用g.x保存并记录debug日志:
# encoding=utf-8 from flask import Flask from flask import g import randomapp = Flask(__name__)@app.before_request def set_on_g_object():x = random.randint(0,9)app.logger.debug('before request g.x is {x}'.format(x=x))g.x = x@app.route("/") def test():g.x=1000return str(g.x)@app.after_request def get_on_g_object(response):app.logger.debug('after request g.x is{g.x}'.format(g=g))return response
二:Flask中静态文件的处理
1.add_url_rule的用法
Flask中提供了url_for来实现创建url,只是生成一个url。在前面的博文中谈论过如果要生成一个css样式的静态文件的url需要使用url_for('static',filename='style.css')来创建相应的url。但是如果我有一个目录attachment的目录存放一些文件的话是没法通过url_for来生成的,默认url_for只可以为static和一些view_func建立url如果要想通过url_for为attachment来添加url就必须添加一个add_url_rule。
# encoding=utf-8 from flask import Flask from flask import g from flask import send_from_directory from flask import url_for import randomapp = Flask(__name__)@app.route("/") def test():return "url创建方式一"def hello():return "url创建方式二"app.add_url_rule("/index/",endpoint="hello",view_func=hello)@app.route('/url1') def Create_url1():return url_for('static',filename="style.css")app.add_url_rule('/attachment/<path:filename>',endpoint='attachment',build_only=True) @app.route('/url2') def Create_url2():return url_for('attachment',filename="upload.txt")
2.send_from_directory的用法
send_from_directory主要用于下载文件:
下面是一个文件的下载实例
# encoding=utf-8 from flask import Flask from flask import g from flask import send_from_directory from flask import url_for import os.pathapp = Flask(__name__) dirpath = os.path.join(app.root_path,'upload') @app.route("/download/<path:filename>") def downloader(filename):return send_from_directory(dirpath,filename,as_attachment=True)
首选在application下建立一个upload目录,构造upload目录的绝对路径。
然后通过浏览器输入指定文件的文件名来下载。
3.static_url_path和static_folder的用法
static_url_path主要用于改变url的path的,静态文件放在static下面,所以正常情况url是static/filename ,但是可以通过static_url_path来改变这个url
static_folder主要是用来改变url的目录的,默认是static,可以通过这个变量来改变静态文件目录。
# encoding=utf-8 from flask import Flask from flask import g from flask import send_from_directory from flask import url_for import os.pathapp = Flask(__name__,static_url_path="/test")@app.route("/") def static_create():return url_for('static',filename='style.css')
4.静态页面缓存和文件索引
SEND_FILE_MAX_AGE_DEFAULT 这个变量用于配置静态文件缓存的时间,Flask默认缓存时间是12hours
例如: app.comfig['SEND_FILE_MAX_AGE_DEFAULT']=2592000 将其缓存时间改为了30天。
Flask不能实现文件索引的功能,也就是无法列出文件名,这个需要web server(Nginx 或 Apache)来实现。
5、session 也是一个 request context 的变量,但它把数据保存到了 cookie 中并发送到了客户端,客户端再次请求的时候又带上了cookie
扫码关注微信公众号
【Python】【Flask】Flask 后台发送html页面多种方法相关推荐
- python反转一个三位整数的多种方法
反转一个三位整数的多种方法 在LintCode上练习遇到这个问题,查阅资料找到多种方法,总结如下. 输入 输出 123 321 第一种:整数方法取余取整实现 class Solution:" ...
- Python(Windows)下安装各种库的多种方法总结--灵活使用pip
虽说大佬们都推荐使用linux进行开发,但有时在window开发点小东西进行学习也是常见的. Python安装库的方法有很多种,也各有弊端,但也各有优势.总结一下,以后结合着使用,想必会事半功倍! 方 ...
- python bs4 安装_Python安装Bs4的多种方法
安装方法一: ①进入python文件夹执行指令(前提是支持pip指令): pip3 install Beautifulsoup4 ②回车待安装完成,如果出现以下红框中内容,即代表安装成功 ③验证是否可 ...
- Vue前后端页面下载功能实现演示,Python+flask提供后台下载服务
Vue前后端页面下载功能实现 效果图 后台下载服务实现 前台简单实现 [ 文章推荐 ] Python 地图篇 - 使用 pyecharts 绘制世界地图.中国地图.省级地图.市级地图实例详解 效果图 ...
- Python全栈(八)Flask项目实战之10.前台发布帖子和后台帖子管理页面搭建
文章目录 一.前台板块页面搭建 二.发布帖子页面搭建 三.前台帖子模型创建 四.文章的发布 1.基本实现 2.项目优化 (1)功能优化--Markdown编辑上传上传本地图片 (2)代码优化--抽离A ...
- 【Python】Flask框架系列(一):安装、页面跳转/重定向、模板、逻辑语句、过滤器、继承/使用block、url链接/加载静态资源
从下载安装开始的所有笔记. 其实 Flask 的示例程序算是 MVC 模式的. Model 是 ORM, V 是 Template, C 是 url route 和 request handler. ...
- 用flask和html制作个人相册页面,Python编程flask使用页面模版的方法
在flask中可以像go和angular那样使用页面模版(template),可以将html页面显示进行模版化,通过参数传递与页面进行数据交互. 概要信息 事前准备:flask ? 代码示例:嵌入式的 ...
- python 框架好学吗-python的flask框架难学吗
Flask框架难学吗?它和Django哪个更容易一些,这可能是学Python web开发的同学经常问的问题,下面来说一下flask框架. Flask是python的web框架,最大的特征是轻便,让开发 ...
- micropython flask_在Python的Flask框架中实现单元测试的教程
概要 在前面的章节里我们专注于在我们的小应用程序上一步步的添加功能上.到现在为止我们有了一个带有数据库的应用程序,可以注册用户,记录用户登陆退出日志以及查看修改配置文件. 在本节中,我们不为应用程序添 ...
最新文章
- 栈----迷宫(Maze)
- 【Binder 机制】AIDL 分析 ( 创建 Service 服务 | 绑定 Service 远程服务 )
- .net Csharpt C# UDP 异步发送信息 代码实例
- 1、LeetCode784 字母大小写全排列
- CSS学习——基础分类整理
- 即时通讯音视频开发(一):视频编解码之理论概述
- TCP UDP HTTP 的关系和区别
- jQuery EasyUI API 中文文档 - 组合表格(ComboGrid)
- 3结构介绍_接收机基本结构
- 解决Eclipse编译web项目失败问题
- Extjs window autoload
- Linux下安装redis5.0.7
- ENVI5.3sp1下载链接以及安装全过程
- Python 100 例 练习实例1
- Linux学习笔记之秋水BBR一键部署
- 89C51单片机内部结构深度解析
- 2021年3月21日 星期日 二月初九 晴
- 风流霸主姜小白-第1章 姜太公劳苦功高始建齐 周幽王荒淫无度葬西周
- Nginx反向代理与负载均衡应用实践(二)
- 冠军联赛:当火焰变成焰火 海水变成泪水