flask学习(二)
一、蓝图
作用:给开发者提供目录结构
功能:1、自定义模板、静态文件目录
2、给一类url加前缀
3、给一类url添加before_request
目录结构
from flask_werkzurg import craete_app app = create_app() if __name__ == "__main__": app.run()
manage.py
from flask import Flask from .views.account import ac def create_app(): app = Flask(__name__) app.register_blueprint(ac, url_prefix="/xxx") #给ac中的所有url加前缀 @app.before_request #给全局所有视图加一个before_request,也可以分别在ac中加这个 def xxx(): xxxx return app
__init__
from flask import Blueprint ac = Blueprint("ac",__name__) @ac.route("/index") def login(): return "xxx"
account
二、session源码流程
三、threading.local
作用:根据每个线程的ID,为每个线程分配一块独立的空间,使得线程对自己空间里的数据进行操作(数据隔离)
import threading from threading import local import time obj = local() def task(i): obj.xxxxx = i time.sleep(2) print(obj.xxxxx,i) for i in range(10): t = threading.Thread(target=task,args=(i,)) t.start()
threading.local
如何实现一个threading.local 的功能?
import threading import time try: import greenlet get_ident = greenlet.getcurrent except: get_ident = threading.get_ident class Local(object): DIC = {} def __getattr__(self, item): ident = get_ident() if ident in self.DIC: return self.DIC[ident].get(item) return None def __setattr__(self, key, value): ident = get_ident() if ident in self.DIC: self.DIC[ident][key] = value else: self.DIC[ident] = {key: value} obj = Local() def task(i): obj.xxx = i time.sleep(2) print(obj.xxx, i) for i in range(10): t = threading.Thread(target=task, args=(i,)) t.start()
threading.local加强版
四、上下文管理
前导:
(1)偏函数:帮助开发者自动传递参数
import functools def func(a1,a2): return a1+a2 new_func = functools.partial(func,666) ret = new_func(1) print(ret) #得到667
(2)super不是去父类中找方法,而是根据继承顺序向上找。
(3)__setattr__的注意事项
class Foo(object): def __init__(self): # self.storage = {} object.__setattr__(self,'storage',{}) def __setattr__(self, key, value): print(key,value,self.storage) obj = Foo() obj.xx = 123
五、将session数据保存到redis
1.安装falsk-session
2.
import redis from flask_session import Session app.config["SESSION_TYPE"] = "redis" app.config["SESSION_REDIS"] = redis.Redis(host="", port=6379,password="") Session(app)
六、创建数据库连接池
import pymysql from DBUtils.PooledDB import PooledDB,SharedDBConnection class Conf(object): SALT = b"asd" SECRET_KEY = "asdf" POOL = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数 mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建 maxcached=5, # 链接池中最多闲置的链接,0和None不限制 maxshared=3, # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。 blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错 maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制 setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."] ping=0, # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always host='127.0.0.1', port=3306, user='root', password='ywj971020', database='code_count', charset='utf8' )
settings.y
flask学习(二)的更多相关文章
- Flask学习 二 模板
jinja2模版 from flask import Flask,render_template app = Flask (__name__) @app.route ('/<name>') ...
- flask学习(二):认识web
url详解: URL是Uniform Resource Locator 的简写,统一资源定位符 一个URL由以下及几部分组成: scheme://host:port/path/?query-strin ...
- flask 学习(二)
安装了flask扩展 以及flask-bootstrap 默认情况下,flask在template文件夹寻找模板. flask 加载的是Jinja2模板,该模板引擎在flask中由函数render_t ...
- web开发框架Flask学习二
jinja2模板规范 在当前项目中创建一个文件为templates的文件夹,将其设置为模板文件夹,新建的html为模板页面, 在视图函数中使用render_template(".html的文 ...
- Flask学习目录
目录 Flask学习初识 Flask学习二
- Flask 学习篇二:学习Flask过程中的记录
Flask学习笔记: GitHub上面的Flask实践项目 https://github.com/SilentCC/FlaskWeb 1.Application and Request Context ...
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...
- Flask学习-Wsgiref库
一.前言 前面在Flask学习-Flask基础之WSGI中提到了WerkZeug,我们知道,WerkZeug是一个支持WSGI协议的Server,其实还有很多其他支持WSGI协议的Server.htt ...
- Flask学习之六 个人资料和头像
英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-vi-profile-page-and-avatars ...
- Flask学习之五 用户登录
英文博客地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-v-user-logins 中文翻译地址:http:// ...
随机推荐
- Linux ISCSI服务配置
Linux ISCSI服务配置,客户端进行访问 环境配置: server端 172.25.0.11 client端 172.25.0.10 配置ISCSI服务端 1.安装软件包 yum install ...
- .NET程序员我是如何通过一个产品在2年内买车买房
刚开始写博客不足之处望大家多多指点,少一些质疑多一些帮助,我们就能成为朋友. 我写博客的目的其实很简单就是为了分享知识,如有幸能申请当MVP那是最好不过了,这个过程对于“大牛”来说很快,但对于我来说估 ...
- [Bilingual] Different proofs of Jordan cardinal form (Jordan标准型的几种证明)
- Riemann流形上的梯度,散度与Laplace算子
今天(准确地说是昨天)被学物理的同学问到Stokes定理,想起来我还有一个知道但没有细看的东西,下面整理成提示完整的习题记录一下. 这部分内容将会加进几何学观止,敬请期待.目前正在纂写代数几何簇的部分 ...
- PyCharm选中文件夹新建时Directory与Python package的区别
pycharm创建普通的directory和package时都是在硬盘上建立一个文件夹.但是建package时会在这个文件夹中自动地生成一个空的__init__.py文件.python的一个包是一个带 ...
- Visual Studio Code扩展:
Auto Close TagAuto Rename TagBeautifyChinese (Simplified) Language Pack for Visual Studio CodeClass ...
- [wiki] Unix like
1. Unix的发展历史 2. 纵向的图 3. 来源: https://zh.wikipedia.org/wiki/类Unix系统 4. 中文版 数种“类UNIX操作系统”的相互关系图 类Unix ...
- 回温js算法
---恢复内容开始--- 一,冒泡排序. 具体算法描述如下: <1>.比较相邻的元素.如果第一个比第二个大,就交换它们两个: <2>.对每一对相邻元素作同样的工作,从开始第一对 ...
- CSS绝对定位元素居中的几种方法
转载自-CSS居中绝对https://www.cnblogs.com/skura23/p/6530556.html 作者:PajamaCat 1,div宽度未知1 <body> <d ...
- Jetson TX1 install Opencv3
https://jkjung-avt.github.io/opencv3-on-tx2/ 注意:在编译的时候会遇到内存空间不足的情况,可以插入U盘,将程序拷贝到U盘内编译,然后安装到Jetson上.U ...