flask中Flask()和Blueprint() flask中的g、add_url_rule、send_from_directory、static_url_path、static_folder的用法
1.Blueprint()在蓝本注册函数register_blueprint()中,第一个参数为所注册的蓝本名称。当我们在应用对象上注册一个蓝图时,需要指定一个url_prefix关键字 参数(这个参数默认是/)。其余可增参数详见Flask官方文档。
2.
static_url_path:'/wallet/static' 改变static的访问路径,即访问的时候从这个路径访问,这个路径寻找从下面的地方寻找?
static_folder:'../../../front/static' 告诉服务器从哪里找static文件
转自:
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 random
- app = 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=1000
- return 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 random
- app = 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.path
- app = 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.path
- app = 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
flask中Flask()和Blueprint() flask中的g、add_url_rule、send_from_directory、static_url_path、static_folder的用法的更多相关文章
- 第九篇 Flask 中的蓝图(BluePrint)
第九篇 Flask 中的蓝图(BluePrint) 蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...
- Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开 怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查 ...
- 9,Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西,在Flask中的蓝图 blueprint 也是非常宏伟的,它的作用就是将 功能 与 主服务 分开. 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的 ...
- Flask中路由系统、Flask的参数及app的配置
@app.route('/', methods=['GET', 'POST']) 1. @app.route()装饰器中的参数 methods:当前URL地址,允许访问的请求方式 @app.route ...
- flask中的g、add_url_rule、send_from_directory、static_url_path、static_folder的用法
Flask中的g对象是个很好的东西,主要用于在一个请求的过程中共享数据.可以随意给g对象添加属性来保存数据,非常的方便,下面的代码是一个使用g对象的例子.下面的这个例子会使用random随机产生一个0 ...
- Flask路由与蓝图Blueprint
需求分析: 当一个庞大的系统中有很多小模块,在分配路由的时候怎么处理呢?全部都堆到一个py程序中,调用@app.route? 显然这是很不明智的,因为当有几十个模块需要写路由的时候,这样程序员写着写着 ...
- python 全栈开发,Day120(路由系统, 实例化Flask的参数, 蓝图(BluePrint), before_request after_request)
昨日内容回顾 1.Flask: from flask import Flask app = Flask(__name__) # 从源码中可以看出,Flask集成的run方法是由werkzeug中的ru ...
- flask 第九篇 蓝图 Blueprint
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
随机推荐
- myslq的索引类型为MyISAM和BDB的表:复合索引下的自增长
本文源自:http://www.himigame.com/mysql/781.html 3.6.9. 使用AUTO_INCREMENT 可以通过AUTO_INCREMENT属性为新的行产生唯一的标识: ...
- opencv实例二:缩放一张图片
1.知识补充 const char*, char const*, char*const的区别 事实上这个概念谁都有只是三种声明方式非常相似: Bjarne在他的The C++ Programming ...
- CentOS系统中last命令的作用
CentOS系统中last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户.通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统. 格式 last [—R] [—n] ...
- SharePoint 沙盒无法启动新的解决方案服务的SPUserCodeV4
开发部署时报错: 错误原因:没有启动该服务: 解决方式:打开管理中心—应用程序管理—服务应用程序--管理服务器上的服务,启动该服务即可.
- ubuntu-12.04.5-desktop-amd64.iso:ubuntu-12.04.5-desktop-amd64:安装Oracle11gR2
ubuntu 桌面版的安装不介绍. 如何安装oracle:核心步骤和关键点. ln -sf /bin/bash /bin/sh ln -sf /usr/bin/basename /bin/basena ...
- NPOI从数据库中调取数据直接导出到EXCEL中
关于NPOI NPOI是POI项目的.NET版本,是由@Tony Qu(http://tonyqus.cnblogs.com/)等大侠基于POI开发的,可以从http://npoi.codeplex. ...
- 数据库ADO方式读取图片
void Caccess_test_1Dlg::OnBnClickedButton3()//将偏振图像存入数据库 { // TODO: 在此添加控件通知处理程序代码 if (!PathFileExis ...
- vs2013配置opencv3.2.0
工具/原料 l VS2013 l OpenCV3.20http://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-win/3.2.0/op ...
- js正则表达式的基本语法
1.正则表达式基本语法 创建正则表达式 var re = new RegExp();//RegExp是一个对象,和Aarray一样 //但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去 r ...
- JavaScript 中的执行上下文和调用栈是什么?
http://zcfy.cc/article/what-is-the-execution-context-amp-stack-in-javascript-by-david-shariff-4007.h ...