主要内容:https://www.cnblogs.com/DragonFire/p/9259999.html
1 django, flask, tornado框架的总结
a : django web
优点:大而全,ORM models ,model Form ,admin ,csrf ,session
缺点:资源浪费
b : flask web
优点:小而精,ORM:x , Form:x , admin:x,csrf:x,session:√,第三方组件 : 全
缺陷:稳定性较差
c : tornado
优点: 异步io非阻塞, 原生websocker 缺点: 什么都没有
2 flask的认识:
from flask import Flask
app = Flask(__name__)
# app是Flask的实例,它接收包或者模块的名字作为参数,但一般都是传递__name__。
# 让flask.helpers.get_root_path函数通过传入这个名字确定程序的根目录,以便获得静态文件和模板文件的目录。
@app.route("/",methods=["GET","POST"])
def index():
return ""
app.run()
# app.run(host="0.0.0.0", port=3556, debug=True)
3 response三部曲 + send_file +jsonify
a django中的httpresponse : 直接写成字符串, return '美好的一天现在开始, 哈哈哈'
b django中的render: 在flask中的语法 return render_template("login.html")
c django中的redirect: 在flask中是一样的 return redirect("/login")
d send_file: return send_file(1.mp4) 打开并传输文件, 也可以是图片或者文件
e jsonify: return jsonify({"name": " jk", "age":34}) content_type:application/json
4 flask中的request变量: from flask import Flask, request
@app.route("/login", methods=("GET", "POST")) def login(): if request.method == "GET": return render_template("login.html") if request.method == 'POST': print("this is post") # 拿到的是form表单提交的数据. 通过to_dict()方法可以获取一个字典 print(request.form.to_dict()) # 当content-type无法被解析时, 存放原始的数据 print(request.data) # 获取的是ajax传输的data里的数据 print(request.json) # 当前访问的url print(request.url) # 接收的是get上的参数 print(request.args) img_obj = request.files.get('filename') # 将图片保存在本地 img_obj.save(img_obj.filename) print(request.values) # 打印主机地址 print(request.host) # 将主机地址转换成httpurl print(request.host_url) login_info = request.form.to_dict() if login_info.get("username") == 'alex' and login_info.get("password") == "123": tag = Markup('<h1>this is the h1 tag</h1>') return render_template("index2.html", stu=STUDENT_DICT, tag=tag) return "用户名或者密码错误"
5 jinja2 : safe Makeup @app.template_global() @app.template_global() 两个装饰器, include标签 block代码块
详解: https://www.cnblogs.com/DragonFire/p/9259999.html
6 session: from flask import session
from flask import session app.secret_key = "yinjiaodawangba" Flask中的session是保存在 cookie 中的 session["user"] = "jwb" session.get("user")