• flask入门


    django与flask

    django  --->羽绒服--->加载项巨大,项目浪费
    	--->django 原生组件非常丰富 -教科书式框架  --->django.model -orm
    	                                        --->django.form
    	                                        --->modelfrom
    	                                        --->admin
    	                                        --->django.session  --基于model
    		                                        
    	                                        
    flask   --->半截袖  ---> 第三方组件运行稳定性相对较差
    	    --->精简  --短小精悍 --精简到只有session
    	    --->flask 第三方组件,非常全
    
    django   适合大型  密集型 --->uwsgi  优化io操作比较好
    flask    适合小型 API服务类型
    

    flask web 框架

    flask   ---> flask库文件
    Jinja2   --->模板渲染库
    MarkupSafe  --->返回安全标签(只要flask返回模板或者标签时,都会依赖Markupsafe)
    werkzeug   --->德文 "工具"  ==uWSGI  底层就是WSGI   --->flask项目启动就是基于werkzug
    

    应用flask

    启动flask

    from flask import Flask
    app=False(__name__)
    app.run()
    

    flask输出helloworld

    from flask import Flask    #导入Flask 类创建Flask应用对象
    app = Flask(__name__)		#app=application
    @app.route('/index')		#为Flask 应用对象增加路由
    def index():				#与路由绑定视图函数,视图函数名尽可能保存唯一
        return "hello world"	  #return 相当于django中的httpresponse
        
    if __name__ == '__main__':		#当前文件处于脚本状态下运行如下代码
        app.run()				     #启动Flask应用
    

    flask中的Response

    Django                  ---->           Flask
    HTTPResponse("hello")				  "hello"
    render("html文件")                      render_template("html文件")
    redirect("重定向路径")				  redirect("重定向路径")
    

    flask新方法

    send_file("文件路径") --->返回文件
    	--->打开并返回文件内容  自动识别文件类型,再responseheaders中加入
    	--->content-type:文件类型  --可以被客户端识别的文件类型
    		--->不能识别的类型,下载处理 --浏览器会下载(这是浏览器处理)
    
      jsonify("字符串或数据类型") --->返回标准格式的json字符串
    	--->content-type:application/json     == 标准格式
    	
    -------------------------
    return d    #暂时不建议使用   兼容性差
    之间返回dict时,本质上在执行jsonify
    API接口
    

    重定向

    再ResponseHeaders中加入了一个localtion:http://url
    

    flask中的request

    在路由的装饰器中添加路由的运行请求方式

    @app.route('/login',methods=["POST","GET"])
    def ....
    ...
    

    flask中的debug模式

    app.debug=True   #开启debug模式
    
    修改代码会自动重启
    

    request获取post参数

    request.form  获取formdata中的数据
    request.form.to_dict()  获取dict类型数据
    

    request获取get参数

    request.url    #get请求的请求地址
    request.values   #接收所有请求的数据(url,formdata中的数据)
    request.url_charset    #url的编码方式
    request.url_root     #完整请求地址  host
    request.url_rule      #请求路由地址
    request.files     #接收上传的文件 
    	--->ret.save(保存路径)  就可以直接保存文件
    request.args       #获取url中的数据
    
    支持to_dict()   方法
    
    获取其他的数据
        Request.headers
        request.cookies
        request.path == request.url_rule
        request.host
        request.host_url
    
    特殊的提交方式数据获取
    如果:content-type :application/json  
    	--->在request.json 获取数据
    
    获取原始请求体中的数据
    只会在content-type无法被识别时或 不包含form字眼
    	request.data  --->bytes类型
    	
    

    flask中的session

    from flask import session
    
    开启session
    	app.secret_ket="复杂字符串"
    	session['user']=request.form.get("")
    
    session    服务器端的键值对
    	--->flask 交由客户端保管机制 
    		开启:
                开启session  ---session[username]=123 ---{username:123}
                序列化字段  ==字符串
                加密字符串 secretKey密钥字符串
    		
    		接收:
    			从cookie中获取到一个教sessionKey的值
    			通过secretkey 解密session
    			反序列化成字典
    cookie	   客户端的键值对
    

    Jinja2

    {{  }}     引用变量数据,以及执行函数
    {%  %}    逻辑代码
    

    全局函数

    @app.template_global()    #使用全局装饰器装饰函数
    def aa(a,b):
        return a+b
    
    <p>{{ aa(10,2) }}</p>		#在html模板中直接{{}}调用函数,并传参.
    
  • 相关阅读:
    mysql 查询技巧
    如何查看mysql索引
    windows下安装redis以及简单的事例
    Buildroot make网卡interfaces文件被修改
    VirtualBox只能生成32位虚拟机
    python-websocket-server hacking
    crontab定时任务
    Linux修改串口irq
    emmc boot_config文件不存在
    /dev/mem直接操作硬件寄存器
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/11581390.html
Copyright © 2020-2023  润新知