session功能

首先我们知道session可以理解是一把钥匙,它存在在服务器上,其实在flask中也有session

1.系统自带的session

from flask import session
import json
app=Flask(__name__,template_folder='templates',static_path='/static/',static_url_path='/static/')
app.debug=True
#设置session加密
app.secret_key='sjehfjeefrjewth43u'
#指定json编码格式 如果为False 就不使用ascii编码,
app.config['JSON_AS_ASCII']=False
app.config['JSONIFY_MIMETYPE']
#指定浏览器渲染的文件类型,和解码格式;="application/json;charset=utf-8" 

@app.route('/login/',methods=['GET','POST'])
def login():msg = ''if request.method=='POST':name=request.values.get('user')pwd=request.values.get('pwd')if name =='zhanggen' and pwd=='123.com':session['user']=name  #设置session的key valuereturn redirect('/index/')else:msg='用户名或者密码错误'return render_template('login.html',msg=msg)@app.route('/index/',methods=['GET','POST'])
def index():user_list = ['张根', 'egon', 'eric']user=session.get('user')           #获取sessionif user:user=['alex','egon','eric']return jsonify(user_list)else:return redirect('/login/')if __name__ == '__main__':app.run()Flask自带session功能

2.第三方session插件

安装 pip install flask-session

from flask import session, Flask,request,make_response,render_template,redirect,jsonify,Response#引入第三方session
from flask.ext.session import Session
import json
app=Flask(__name__,template_folder='templates',static_path='/static/',static_url_path='/static/')
app.debug=True#设置session加密
app.secret_key='sjehfjeefrjewth43u'
app.config['JSON_AS_ASCII']=False  #指定json编码格式 如果为False 就不使用ascii编码,
app.config['JSONIFY_MIMETYPE'] ="application/json;charset=utf-8" #指定浏览器渲染的文件类型,和解码格式;

app.config['SESSION_TYPE']='redis'from redis import Redis        #引入连接 redis模块
app.config['SESSION_REDIS']=Redis(host='192.168.0.94',port=6379) #连接redis
Session(app)@app.route('/login/',methods=['GET','POST'])
def login():msg = ''if request.method=='POST':name=request.values.get('user')pwd=request.values.get('pwd')if name =='zhanggen' and pwd=='123.com':session['user']=name  #设置session的key valuereturn redirect('/index/')else:msg='用户名或者密码错误'return render_template('login.html',msg=msg)@app.route('/index/',methods=['GET','POST'])
def index():user_list = ['张根', 'egon', 'eric']user=session.get('user')           #获取sessionif user:user=['alex','egon','eric']return jsonify(user_list)else:return redirect('/login/')if __name__ == '__main__':app.run()把session存到redis

蓝图

蓝图你可以理解为是一个启动不了了的flask的实例,不多说上实例自己看

这个是我们的蓝图目录

#views.py文件中写from flask import Blueprint  # 导入 Flask 中的蓝图 Blueprint 模块
from flask import render_templatesv = Blueprint("sv",__name__,template_folder="sv_template",  # 每个蓝图都可以为自己独立出一套template模板文件夹,如果不写则共享项目目录中的templatesstatic_folder="sv_static"  # 静态文件目录也是可以独立出来的)  # 实例化一个蓝图(Blueprint)对象(切记!!!!!!注册!!!!!!!!!!!!!!!!)
@sv.route("/svlist")
def view_list():return render_template("svlist.html")

#s4app.html中写入from flask import Blueprint  # 导入 Flask 中的蓝图 Blueprint 模块
from flask import render_templatesv = Blueprint("sv",__name__,template_folder="sv_template",  # 每个蓝图都可以为自己独立出一套template模板文件夹,如果不写则共享项目目录中的templatesstatic_folder="sv_static"  # 静态文件目录也是可以独立出来的)  # 实例化一个蓝图(Blueprint)对象
@sv.route("/svlist")
def view_list():return render_template("svlist.html")

这样我们打开浏览器看到的就是我们的页面,这就是蓝图,他有自己的模板文件,只要被注册了就一定会生效,当然了,蓝图内部的视图函数route不雅重复,这是前辈踩的坑,不信你自己试试

message (闪现)

message是一个基于Session实现的用于保存数据的集合,其特点是:一次性。

特点:和labada匿名函数一样不长期占用内存

from flask import Flask,request,flash,get_flashed_messagesapp = Flask(__name__)
app.secret_key = 'some_secret'@app.route('/set/')
def index2():flash('Disposable')    #在message中设置1个个值return 'ok'#---------------------------------------------------------------------------------

@app.route('/')
def index1():messages = get_flashed_messages() #获取message中设置的值,只能获取1次。(1次性)print(messages)return "Index1"if __name__ == "__main__":app.run()flask_message

中间件

flask也有中间件功能和Django类似,不同的是使用的是使用3个装饰器来实现的;

1.@app.before_first_request :请求第1次到来执行1次,之后都不执行;

2.@app.before_request:请求到达视图之前执行;(改函数不能有返回值,否则直接在当前返回)

3.@app.after_request:请求 经过视图之后执行;(最下面的先执行)

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask, Request, render_templateapp = Flask(__name__, template_folder='templates')
app.debug = True@app.before_first_request  #第1个请求到来执行
def before_first_request1():print('before_first_request1')@app.before_request #中间件2
def before_request1():Request.nnn = 123print('before_request1')  #不能有返回值,一旦有返回值在当前返回
@app.before_request
def before_request2():print('before_request2')@app.errorhandler(404)
def page_not_found(error):return 'This page does not exist', 404@app.route('/')
def hello_world():return "Hello World"@app.after_request #中间件 执行视图之后
def after_request1(response):print('after_request1', response)return response@app.after_request #中间件 执行视图之后 先执行 after_request2
def after_request2(response):print('after_request2', response)return responseif __name__ == '__main__':app.run()

 参考地址:https://www.cnblogs.com/heshun/p/10256443.html

转载于:https://www.cnblogs.com/lzqrkn/p/10277277.html

flask综合整理2相关推荐

  1. 前端面试丨综合整理中高级前端最新面试题

    前端面试如今的知识面越来越广,甚至在某些公司都已经到了算法级别,但是做为一般的程序员,如何去复习面试呢?综合整理了以往面试最常见的一些问题,大家可以看一看有没有自己的盲区趁机复习.此些题都是笔者在以往 ...

  2. 基于树莓派的python GPIO编程-常用函数综合整理

    Hello,朋友们大家好,欢迎大家来到LIUSE网络. 随着Mini型PC越来越多,与之而来的创客也丰富起来,比如说Arduino就是一个非常好里例子. 不过,Arduino毕竟是一块适合入门型的基础 ...

  3. 综合整理的一个可以直接使用的生成验证码的代码

    学习javaweb时,首先拿了一个用户注册界面试试手,写完了之后觉得应该在注册加上一个验证码验证,于是从网上找如何在项目中添加验证码,找了很多博客,综合了一下整理了一份可以直接向项目中直接添加的代码, ...

  4. 文本超出隐藏 综合整理

    最近的开发中,文本超出隐藏总是一个没有得到完整解决的问题,现在整理一遍,虽然也没有得出一劳永逸的方案. PURE CSS 单行隐藏 需要限制 width overflow: hidden; text- ...

  5. 全球IEEE期刊大全(综合整理,附原文论文下载地址)

    本文整理了来自全球的IEEE期刊,一共有67种,共计305236篇论文 期刊类别: 1.Industrial Electronics, IEEE Transactions on 2.IEEE tran ...

  6. 模拟电路学习入门的建议(综合整理)

    转载自:http://bbs.eetop.cn/viewthread.php?tid=170164 "模拟电路学习入门" "如何才算学好模电,数电"一帖引来大家 ...

  7. Windows AD域用户属性对照表(综合整理)

    "常规"标签  姓 Sn  名 Givename  英文缩写 Initials  显示名称 displayName  描述 Description  办公室 physicalDel ...

  8. 【pandas学习笔记】综合整理

    1. Reindex Series Reindex import numpy as np import pandas as pd >>>s1 = pd.Series(np.rando ...

  9. GDAL综合整理--7:GDAL实用工具简介

    在网上看到这篇文章写得非常全面,而且是中文的,就转过来了,学习一下 其中有部分内容是重复的,不过不影响,非常好的资料 主要转自http://blog.csdn.net/liminlu0314?view ...

  10. Linux服务详解(主要基于RedHat系的及Centos默认服务详解)(综合整理)

    转自:http://blog.csdn.net/jj198981/article/details/7605558 acpid ACPI(全称 Advanced Configuration and Po ...

最新文章

  1. EDIUS新建项目工程设置
  2. Selenium IDE工具界面剖析
  3. PHP XML和数组互相转换
  4. linux centos7完整记录对根目录的磁盘扩容过程(扩容99G)
  5. C/C++不同文件夹下包含头文件的方法及#include的使用
  6. 【北斗】北斗卫星导航系统(BDS)介绍
  7. android 左移动画_android旋转动画和平移动画详解,补充说一下如果制作gif动画放到csdn博客上...
  8. NoClassDefFoundError: Could not initialize class com.fasterxml.jackson.databind.ObjectMapper
  9. 代码之美~Lambda带给我们的不只是简洁
  10. plus/digg_ajax.php,织梦dedecms首页添加digg顶一下的修改方法
  11. php序列化后换服务器不能解析,利用php序列化和反序列化的语法差异绕过防护_网站服务器运行维护...
  12. pytorch的vgg19的预训练模型提取图片特征
  13. STM32单片机热敏打印自助排队叫号系统银行医院柜台DY-SV17F语音播报
  14. Staf/Stax安装
  15. android 监听图库变化,Android ContentObserver 监听图库变化
  16. 第四章 序列式容器(sequence containers)
  17. 【知识点】单片机USB转TTL模块的相关知识
  18. 今天看了NES游戏,哈哈,感觉又回到了童年,可是我已经长大了
  19. BiLiBiLi视频转存方法
  20. 计算机毕业设计源代码Python毕业论文题目基于Python实现的学生在线选课系统[包运行成功]

热门文章

  1. Atitit Java制作VCARD vcf 以上就是关于vCard的基本介绍,维基百科(英文)https://en.wikipedia.org/wiki/VCard写的比较全,可惜我看不懂。
  2. Atitit 提升水平 把代码写的有技术含量 目录 1. 提高可读性(重要) 2 1.1. 异常模式代替返回值 2 1.2. Dsl 2 1.3. 流畅接口方法链 2 1.4. 层次结构抽象 2 1
  3. Atitit java zip compress use apache tool jar 压缩的问题 static void zip(java.lang.String zipFileName,
  4. Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结
  5. Atitti  css   transition Animation differ区别
  6. paip.python NameError name 'xxx' is not defined\
  7. PAIP.java程序调试的注意点及流程总结
  8. 零部件表设计 T_AIS_BASE_PARTS_INFO
  9. TDengine:A股分钟线数据的尝试
  10. (转)证券投资及财富管理市场创新趋势