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模板中直接{{}}调用函数,并传参.
posted @ 2019-09-24 21:52  路一  阅读(207)  评论(0编辑  收藏  举报