114 flask第一天 request 参数 response jinja2(模板语言) session

主要内容: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")

  

  

    

猜你喜欢

转载自www.cnblogs.com/gyh412724/p/10131072.html
今日推荐