zoukankan      html  css  js  c++  java
  • flask蓝图,cbv,python中的redis操作

    flask蓝图目录结构

    1.创建manager.py的文件
    2.创建一个app01包
    3.包中创建static 静态文件
    4.包中创建templates html模板文件
    5.包中创建views视图文件夹
    6.在views视图中创建一个users的蓝图py文件
    7.在视图文件中编写蓝图相应的创建代码
    8.在__init__中创建一个函数,并在函数内完成flask app创建等代码. 并将实例化好的app返回
    9.在manager中导入__init__的函数,并实例化一个app.并且允许
    

    view蓝图文件(第六步)

    from flask import Blueprint				#从flask导入蓝图
    
    user =Blueprint("user",__name__)		#实例化一个蓝图对象,第一参数为蓝图名,第二个为__name__
    
    @user.route("/login")				#flask   装饰圈路由
    def login():					   #flask  路由函数
        return "login成功"			  #返回
    

    __init__中创建函数(第八步)

    from flask import Flask			#导入Flask   ---注意大小写
    from app1.views.user_view import user		#导入视图类写的
    
    def create_app():						#自定义创建flask函数	
        app=Flask(__name__)					#实例化一个app
        app.config['DEBUG']=True			#开启flask debug模式。修改代码自动重启
        app.register_blueprint(user)		#注册蓝图
    
        return app						 #返回实例化的app
    

    manage中(第九步-)

    from app1 import create_app				#从app中导入自定义的创建flask 的函数
    app=create_app()					   #app获得  函数中的实例化对象
    
    	
    if __name__ == '__main__':
        app.run()						   #实例化的run方法运行
    

    flask CBV

    from flask import views
    
    
    class Login(views.MethodView):	--->		#创建class类
        def get(self):				--->		#get方法
            return 'get 200ok'
        def post(self):				--->		#post方法
            return "post 200ok"
    
    #设置cbv的路由.(路径,view_func=Login.as_view(name='自定义名'))--->自定义名和endpoint类似,全views唯一
    app.add_url_rule('/login1',view_func=Login.as_view(name='login'))
    
    
    ["get", "post", "head", "options", "delete", "put", "trace", "patch"]
    cbv支持的方式. 并且可以在源码中自己添加.可完成自定义反扒机制的目的
    

    监听,端口

    0.0.0.0   ->所以ip都可以作为入口ip
    5000     ->端口 对应应用程序
    
    
    包              ->              应用程序
    应用层          --->             应用层
    

    flask全程回顾

    flask request

    request.form #获取formdata中数据
    request.args #获取url中的数据
    request.data #获取原始数据 content-type 中没有form字眼
    request.json #获取content-type:application/json   -->字典
    request.files #获取请求中的文件数据Filestorage 对象 --->save(储存路径)
    
    request.method #获取请求方式 GET,POST,DELETE,PUT
    request.path  #获取请求路径,路由地址
    request.host_url #获取请求host地址
    request.cookie #获取cookie对象
    request.headers #获取请求头中的数据
    
    request.enciron  #使用wsgi的原始数据
    

    flask response

    1 ""   #返回字符串.
    2. render_templates("模板名称") --->默认模板存放路径templates 
    3.redirect("/路由地址")   #响应头中:location:http://url/路由地址 
    
    4.send_file()     #打开并返回文件内容.自动识别文件类型.content-type:文件类型
    5.jsonfy(dict)   #返回标准格式的JSON格式字符串.响应头中 content-type:application/json
    

    flask 中的session

    from flask import session
    如果要使用session.需要再application.secret_key="字符串" --->  设置密钥
                         即:app.config['SECRET_KET']="字符串"
    
    session['user'] =123    #设置session
    
    使用session取值时,使用get().   如果使用session[] 取值,如果不存在会报(keyerror错误)
    
    
    

    flask 中session 交由客户端保管机制:

    正:
    1.session['user']= "123"    #设置密钥
    2.序列化session 字符串
    3.挺高SECRET_KEY 加密字符串(加密算法)
    4.cookie中加入 {SESSION_COOKIE_NAME}:SECRET_KEY   加密字符串
    
    反:
    1.cookie 获取{SESSION_COOKIE_NAME}:SECRET_KEY
    2.通过SECRET_KET 解密,字符串,解密算法
    3.反序列化
    4.session.get("user")
    

    flask中的路由

    fbv增加路由:
        @app.route("/")
        app.add_url_rule 
    
    cbv增加路由:
    	app.add_url_rule 
    	
    	
    endpoint app 中是唯一的.路由和视图函数之间的桥梁
    

    flask初始化

    app=Flask(__name__)
    template_folder  #模板存放路径(原理:os.path.join(root_path,template_folder))
    static_folder    #静态文件存放路径
    static_url_path  #静态文件访问路径         一般情况:"/{static_folder}"
    ~~~
    

    flask配置

    app.deflaut_config  查看默认配置
    

    蓝图

    蓝图就是不能run 的flask实例
    蓝图中,没有config对象的
    

    特殊装饰器

    @app.before_request  #在请求进入视图函数之前
    @app.after_request   #在响应和客户端之前
    
    正常:be1 -> be2-> 视图函数 ->af2 -af1
    异常:be1 ->异常 ->af2 ->af1
    
    @app.errorhandler(4xx,5xx)   #重定义错误信息
    
    @app 可以是 @bp.   蓝图对象
    

    cbv

    参上
    

    flask第三方组件之 flask-session

    flask的session:
    	交由客户端保管机制.安全性相对较差 .
    
    优势是:不占用一点服务器的空间
    
    flask-session  相对类似于 -djangosession
    session 存放于->redis (在内网使用)
    

    操作

    导入session,需要在config之后,在蓝图导入之前
    def create_app():
        app=Flask(__name__)
        app.config['DEBUG']=True
        -------------------------------------
        Session(app)
    
    	------------------------------------
        app.register_blueprint(user)
    
        return app
    

    设置session配置文件

    def create_app():
        app=Flask(__name__)
        app.config['DEBUG']=True
        
        app.config['SESSION_TYPE']='redis'		#设置session配置文件的session_type为redis
    
        Session(app)
    
    
        app.register_blueprint(user)
    
        return app
    

    如果需要连接远程redis

    在Session(app) 之前添加设置:
    	app.config["SESSION_REDIS"] = Redis(host="127.0.0.1", port=6379, db=15)
    

    python中操作redis

    导入模块

    from redis import Redis
    

    实例化

    rdb=Redis()
    不在本机时,需要指定host,port,db
    
    rdb=Redis(host='127.0.0.1',port=6379,db=15)
    

    设置key

    rdb.set("key","value")
    

    取值

    rdb.get("key")
    

    redis存储字典

    将字典通过json序列化,然后存储在redis中.
    取出后再使用json反序列化
    
    d=json.dumps(d)
    
    d=json.loads(d)
    
  • 相关阅读:
    韩日网民爆发网络大战 互相攻瘫服务器 狼人:
    2010年RSA大会RSA总裁主题演讲:云的安全 狼人:
    黑客非法下载4千万条学历数据被判刑 狼人:
    黑客称Windows 7比Linux安全 Flash是威胁 狼人:
    方法代码Scala中的语言特性是如何实现的(2)
    参考知识svideo vs. composite video vs. component video 几种视频格式详细说明和比较
    旋转长度左旋转字符串(26)
    设置参数cocos2dx 2.x 进度条CCProgressTimer
    队列输入队列基本操作
    安装华硕华硕电脑K52JU安装银联控件蓝屏
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/11594614.html
Copyright © 2011-2022 走看看