flask学习一
Python 现阶段三大主流Web框架 Django Tornado Flask 对比
1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,属于全能型框架
2.Tornado 主要特点是原生异步非阻塞,在IO密集型应用和多任务处理上占据绝对性的优势,属于专注型框架
3.Flask 主要特点小而轻,原生组件几乎为0, 三方提供的组件请参考Django 非常全面,属于短小精悍型框架
-
Django 通常用于大型Web应用由于内置组件足够强大所以使用Django开发可以一气呵成
-
Tornado 通常用于API后端应用,游戏服务后台,其内部实现的异步非阻塞真是稳得一批
-
Flask 通常应用于小型应用和快速构建应用,其强大的三方库,足以支撑一个大型的Web应用
-
Django 优点是大而全,缺点也就暴露出来了,这么多的资源一次性全部加载,肯定会造成一部分的资源浪费
-
Tornado 优点是异步,缺点是干净,连个Session都不支持
-
Flask 优点是精悍简单
from flask import Flask,request, redirect, render_template
app = Flask(__name__) # 实例化Flask对象
@app.route('/')
def hello_world():
return 'Hello World!' # HttpResponse
@app.route("/redi")
def redi():
return redirect("/") # 会去找"/"的url
@app.route("/home")
def home():
return render_template("home.html") # 打开html
@app.route('/req', methods=["POST","GET"])
def req():
# print(request.method) # 请求方式
# print(request.form) # ImmutableMultiDict([('user', '123'), ('pwd', '123456')])查看form传的值
# reg_dict = dict(request.form)
# print(reg_dict) # 以字典的形式查看{'user': '123', 'pwd': '123456'}
# print(request.form['user']) # 获取对应值
# print(request.form.get('pwd')) # 获取对应值
# print(request.form.keys()) # <dict_keyiterator object at 0x000001E73D7DA6D8>
print(request.args) # 查看url传的值
reg_dict = dict(request.form)
print(reg_dict)
print(request.args.values()) # <generator object MultiDict.values at 0x000001E3E3EAE948>
print(list(request.args.values())) # 可查看值
print(list(request.args.keys())) # 可查看键
print(request.args.keys()) # <dict_keyiterator object at 0x000001E3E41F9D68>
print(request.values) # 查看所有的参数,不论url还是form
print(request.values.get('id'))
print(request.values['user'])
print(request.values.to_dict())
return "OK OldBoy"
if __name__ == '__main__':
app.run()
request.args 与 request.form 的区别就是:
- request.args 是获取url中的参数
- request.form 是获取form表单中的参数
如果url和form中的Key重名的话,form中的同名的key中value会被url中的value覆盖
request.cookies 存在浏览器端的字符串儿也会一起带过来
- 前提是你要开启浏览器的 cookies
- request.cookies 是将cookies中信息读取出来
request.headres 用来获取本次请求的请求头
request.data 如果处理不了的就变成字符串儿存在data里面
- 你一定要知道 request 是基于 mimetype 进行处理的
- mimetype的类型 以及 字符串儿 : http://www.w3school.com.cn/media/media_mimeref.asp
- 如果不属于上述类型的描述,request就会将无法处理的参数转为Json存入到 data 中
- 其实我们可以将 request.data , json.loads 同样可以拿到里面的参数
request.files
- 如果遇到文件上传的话,request.files 里面存的是你上传的文件,但是 Flask 在这个文件的操作中加了一定的封装,让操作变得极为简单
print(request.files)
print(request.files['file']) # 获取文件
print(request.files.get('file'))
my_file = request.files['file']
my_file.save("ss.txt") # 保存文件
# 获取当前的url路径
print(request.path)# /req
# 当前url路径的上一级路径
print(request.script_root) #
# 当前url的全部路径
print(request.url) # http://127.0.0.1:5000/req
# 当前url的路径的上一级全部路径
print(request.url_root ) # http://127.0.0.1:5000/
request.json
- 如果在请求中写入了 "application/json" 使用 request.json 则返回json解析数据, 否则返回 None

浙公网安备 33010602011771号