• 【后端】Python中的Web开发框架Flask入门hello world;几个案例让你迅速入门Python Flask


    说到web开发框架,小编平常用Flask和Django的比较多,其中的Flask属于是轻量级的开发框架,写一个API接口也是十分地方便。我们先要安装好需要用到的模块,通过pip命令:

    pip3 install flask
    
    • 1

    而ASGI服务器可以使用uvicorn,那么同样地

    pip3 install uvicorn
    
    • 1

    1. HelloWorld

    我们先尝试用Flask框架来写一个HelloWorld,代码如下

    from flask import Flask, request
    import json
     
    app = Flask(__name__)
     
    @app.route('/')
    def hello_world():
        return 'hello world'
     
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8889)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    运行后出现以下提示:
    在这里插入图片描述
    然后在浏览器当中输入弹出来的url去访问页面,如下所示就会出现含有“hello world”的页面
    在这里插入图片描述

    2. 返回随机数

    我们在上面的“Hello World”的基础之上再来写几个案例,例如返回随机数的操作,在Flask框架当中的代码如下

    @app.route('/random-number')
    def random_number():
        return str(random.randrange(100))
    
    • 1
    • 2
    • 3

    我们在浏览器中测试一下出来的结果,如下所示

    在这里插入图片描述

    3. 判断是否都是由字母组成

    接下来我们来看一下,当我们发送一个GET请求,判断当中的一个url请求参数是否都是由字母组成的,其中Flask框架当中的代码如下

    @app.route('/alpha', methods=['GET'])
    def alpha():
        text = request.args.get('text', '')
        result = {'text': text, 'is_alpha' : text.isalpha()}
        return jsonify(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    我们在浏览器中测试一下出来的结果,如下所示
    在这里插入图片描述

    4. 创建新用户

    上面的几个案例都是GET请求,下面我们来看一下POST请求该如何处理,例如我们想通过POST请求来创建一个新用户,在Flask框架中的代码如下

    @app.route('/create-user', methods=['POST'])
    def create_user():
        id = request.form.get('id', '0001')
        name = request.form.get('name', 'Anonymous')
        data = {'id': id, 'name': name}
        result = {'status_code': '0', 'status_message' : 'Success', 'data': data}
        return jsonify(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    可以直接在Postman当中测试一下该API的功能,如下所示
    在这里插入图片描述
    我们需要在“methods”当中指定是用POST请求,而在FastAPI框架当中则不需要指定,直接只用app.post()装饰器即可

    5. 返回静态页面

    而要是碰到需要返回一个静态页面的时候,在Flask框架中的代码是这样子的

    @app.route('/get-webpage', methods=['GET'])
    def get_webpage():
        return render_template('flask_1.html', message="Contact Us")
    
    • 1
    • 2
    • 3

    6. 源代码汇总

    from flask import Flask, request, render_template
    import random
    from flask import jsonify
    import json
     
    app = Flask(__name__)
     
    @app.route('/')
    def hello_world():
        return 'hello world'
     
    @app.route('/random-number')
    def random_number():
        return str(random.randrange(100))
     
    @app.route('/alpha', methods=['GET'])
    def alpha():
        text = request.args.get('text', '')
        result = {'text': text, 'is_alpha' : text.isalpha()}
        return jsonify(result)
     
    @app.route('/create-user', methods=['POST'])
    def create_user():
        id = request.form.get('id', '0001')
        name = request.form.get('name', 'Anonymous')
        data = {'id': id, 'name': name}
        result = {'status_code': '0', 'status_message' : 'Success', 'data': data}
        return jsonify(result)
     
    @app.route('/get-webpage', methods=['GET'])
    def get_webpage():
        return render_template('flask_1.html', message="Contact Us")
     
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8889)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    PacBio全长扩增子测序发现酵母益生菌可提高黑山羊免疫力
    clickhouse出现数据重复问题
    软件开发工程师笔试记录--关键路径,浮点数计算,地址变换,中断向量,I/O接口,海明码
    地方院校C语言程序设计课程建设与实践
    Java 代理模式之静态代理与动态代理
    java算法题Day33
    科技云报道:推进工业新质生产力机器人有望成为AI下一个新引擎?
    (六)centos7案例实战——sonarQube安装及springboot项目集成sonarQube完成代码质量检查
    最小编辑距离-动态规划
    [ROS](09)ROS通信 —— 话题(Topic)通信之msg
  • 原文地址:https://blog.csdn.net/weixin_39589455/article/details/126529663