zoukankan      html  css  js  c++  java
  • flask总结02

    一:flask的响应:

    flask默认支持2种响应方式:
    
    数据响应: 默认响应html文本,也可以返回 JSON格式
    
    页面响应: 重定向  url_for
    
    响应的时候,flask也支持自定义http响应状态码

    01:响应html文本

    from flask import Flask, request
    from settings.dev import DevConfig
    
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    
    @app.route("/test04")
    def test04():
        return "<h1> 这是相应html 文本的例子 </h1>"
    
    if __name__ == '__main__':
        app.run()

    相应效果:

    02:返回JSON数据(需要导入jsonify)

      案例代码:

      
    from flask import Flask, request,jsonify
    from settings.dev import DevConfig
    
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    
    @app.route("/test04")
    def test04():
    
        return "<h1> 这是相应html 文本的例子 </h1>"
    
    
    @app.route("/test05")
    def test05():
        data = [
            {"id": 1, "username": "liulaoshi", "age": 18},
            {"id": 2, "username": "liulaoshi", "age": 17},
            {"id": 3, "username": "liulaoshi", "age": 16},
            {"id": 4, "username": "liulaoshi", "age": 15},
        ]
    
    
        return jsonify(data)
    
    
    if __name__ == '__main__':
        app.run()
    View Code

    浏览器效果:

     03:重定向(需要导入from flask import Flask,redirect,url_for)

      案例代码:

      
    from flask import Flask, request,jsonify,redirect,url_for
    from settings.dev import DevConfig
    
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    
    @app.route("/test04")
    def test04():
    
        return "<h1> 这是相应html 文本的例子 </h1>"
    
    
    @app.route("/test05")
    def test05():
        data = [
            {"id": 1, "username": "liulaoshi", "age": 18},
            {"id": 2, "username": "liulaoshi", "age": 17},
            {"id": 3, "username": "liulaoshi", "age": 16},
            {"id": 4, "username": "liulaoshi", "age": 15},
        ]
    
        return jsonify(data)
    
    
    
    @app.route("/test06")
    def test06():
    
        return redirect(url_for("test05"))
    
    
    if __name__ == '__main__':
        app.run()
    案例代码

    案例显示结果:(地址栏很快就跳转到了test05)

     04:重定向到带有参数的视图函数(在 url_for 函数中传入参数)

      
    # 路由传递参数
    @app.route('/user/<user_id>')
    def user_info(user_id):
        return 'hello %d' % user_id
    
    # 重定向
    @app.route('/demo4')
    def demo4():
        # 使用 url_for 生成指定视图函数所对应的 url
        return redirect(url_for('user_info', user_id=100))
    View Code

    05:自定义状态码

    在 Flask 中,可以很方便的返回自定义状态码,以实现不符合 http 协议的状态码,例如:status code: 666

    @app.route('/demo4')
    def demo4():
        return '状态码为 666', 400

     二:会话控制(session和cookie)

    01:设置cookie

    设置cookie需要通过flask的Response响应对象来进行设置,由flask内部提供了一个make_response函数给我们可以快速创建响应对象

    from flask import Flask,make_response
    案例代码:
    from flask import Flask, request,jsonify,redirect,url_for,make_response
    from settings.dev import DevConfig
    
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    
    @app.route("/test07")
    def test07():
        resp=make_response('this is to set cookie')
        resp.set_cookie("username","Tom",max_age=3600)  #max_age=3600 有效时间秒
    
        return resp
    
    
    if __name__ == '__main__':
        app.run()

    通过浏览器查看结果:

     02:获取cookie

    代码:

    from flask import Flask, request,make_response
    from settings.dev import DevConfig
    
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    
    
    #设置cookie
    @app.route("/test07")
    def test07():
        resp=make_response('this is to set cookie')
        resp.set_cookie("username","Tom",max_age=3600)
    
        return resp
    
    
    
    #获取cookie
    from flask import Flask,request
    @app.route("/get_cookie")
    def resp_cookie():
        resp=request.cookies.get("username")
        print("cookie值是〉〉",resp)
    
        return "获取到的cookie值是:〉〉%s" % resp
    
    
    if __name__ == '__main__':
        app.run()

    显示结果:

    03:设置session和获取session

    对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息
    
    在服务器端进行状态保持的方案就是`Session`
    
    注意: **Session依赖于Cookie**,而且flask中使用session,需要配置SECRET_KEY选项,否则报错.

    代码:

    from flask import Flask, request,jsonify,redirect,url_for,make_response
    from settings.dev import DevConfig
    
    app = Flask(__name__)
    app.config.from_object(DevConfig)
    
    
    #设置session
    from flask import Flask,session
    @app.route("/test08")
    def set_session():
        session["username"]="One-Tom"
        return "ok"
    
    
    #获取session
    @app.route("/test09")
    def get_cookie():
        return session.get("username")
    
    
    
    
    if __name__ == '__main__':
        app.run()

    设置session的结果:

    显示获取到的session结果:

     
  • 相关阅读:
    超市账单管理系统设计思路
    Hibernate之Query.uniqueResult()结果为数值的注意事项
    Hibernate之Query.uniqueResult()结果为数值的注意事项
    Struts2加载自定义库注意事项
    135编辑器使用方法
    SQLite – ORDER 子句
    Readings
    自己常用的导航工具
    Spring中的事件处理
    iOS-Runtime
  • 原文地址:https://www.cnblogs.com/one-tom/p/10672071.html
Copyright © 2011-2022 走看看