zoukankan      html  css  js  c++  java
  • flask框架基本使用(2)(响应与重定向)

    #转载请留言联系

    flask 框架基本使用(1):https://www.cnblogs.com/chichung/p/9756935.html

    1. flask 自定义返回状态码与响应头

    from flask import Flask,make_response
    
    app=Flask(__name__)
    
    @app.route("/")
    def index():
        #666是指定的状态码,name:chichung是添加到响应头的键对
        return "<h1>我是大标题</h1>",666,{"name":"chichung"}
    
    if __name__ == '__main__':
        app.run()

     

    2. flask 返回json

    json 是 js 里面默认的一种对象格式,是当今网络普遍使用的一种数据传输格式,应用在不同的平台或不同的编程语言直接进行数据的传输。

    在开发中,经常遇到后端返回 json 给前端的情况。那么,用 flask 应该怎么返回 json 呢?

    from flask import Flask,jsonify
    
    app = Flask(__name__)
    
    @app.route("/index_data")
    def index_data():
        respond_data = {    #判断json格式是否正确可以用搜索一下json格式化
            "name": "chichung",
            "height": 177,
            "weight": 110.5
        }
        return jsonify(respond_data)
    
    if __name__ == '__main__':
        app.run()

    jsonify 方法可以把 respond_data 字典转化为 json 的字符串(原理与 json.dump())相同,然后在进行返回给前端。

    拓展:

    在返回不同的数据时(例如图片,js,css......),通常要指定响应头,写上返回的数据的类型。

    # js
    text/javascript
    application/javascript


    # css
    text/css


    # html
    text/html


    # json
    application/json
    text/json

    # png,gif,jpg/jpeg
    image/png
    image/gif
    image/jpeg
    image/jpg

     

    3. flask 实现网页的重定向响应

    重定向响应是什么呢?举个栗子说明。京东以前的域名是www.360buy.com,而现在改为了www.jd.com。但是你访问360buy.com的时候,会自动跳转到jd.com。假设你是京东的web开发,你要实现这个功能,你会怎么做呢?

    from flask import Flask,redirect
    
    app=Flask(__name__)
    
    @app.route("/")
    def index():
        return redirect("http://www.jd.com")
    
    if __name__ == '__main__':
        app.run()

    还有一种情况,你打开淘宝,点进“我的淘宝”,跳出了让你登录的窗口。这是怎么实现的呢?

    from flask import Flask,redirect,url_for
    
    app=Flask(__name__)
    
    @app.route("/center")
    def center():
        #如果还没登录自动跳转到登录界面
        url = url_for("login")    #url_for的作用是根据视图函数的名称来自动生成对应的url地址
        return redirect(url)
    
    @app.route("/login")
    def login():
        return "请登录"
    
    if __name__ == '__main__':
        app.run()

    进行页面跳转的编写时,一般不要固定跳转的 url 地址,而是采用 url_for 函数来生成对应的 url 地址。因为有些公司会定期更改一下 url ,但是视图函数的名字一直都是固定的。

    拓展:

    3xx统一都是表示页面重定向。

    301 永久重定向

    302 临时重定向

  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/chichung/p/9761610.html
Copyright © 2011-2022 走看看