zoukankan      html  css  js  c++  java
  • 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模板中直接{{}}调用函数,并传参.
    
  • 相关阅读:
    Quartz.NET 2.0 学习笔记(1) :Quartz.NET简介
    Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度
    Quartz.NET 2.0 学习笔记(2) :和1.0的几点不同
    C#实现网页正文提取算法ok
    网页正文提取的思路
    sql getdate() 时间格式设置
    分页,静态程序asp实现,php同理
    网页正文抽取能用的抽取代码java
    泛采集技术
    查询一个数据表中的数据并插入到另一个数据表
  • 原文地址:https://www.cnblogs.com/luyi84895838/p/11581390.html
Copyright © 2011-2022 走看看