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 临时重定向

  • 相关阅读:
    bzoj1230[Usaco2008 Nov]lites 开关灯
    反素数
    POJ2886Who Gets the Most Candies?(线段树之约瑟夫)
    POJ2828 Buy Tickets(线段树之插队问题)
    codeforces 985C Liebig's Barrels(贪心)
    hdu Minimum Inversion Number(逆序数的小知识与线段树)
    hdu2795 Billboard(线段树)
    线段树之各类模板
    静态邻接表模板
    坐标离散化
  • 原文地址:https://www.cnblogs.com/chichung/p/9761610.html
Copyright © 2011-2022 走看看