Flask快速上手【无废话版】

目录

Flask-快速启动

Flask-参数读取

Flask-文件上传

Blueprint


Flask是一个用于构建Web应用程序的Python微型框架。它被设计为:简单、轻量级且易于扩展的框架,适用于从小型应用到复杂的Web应用开发。

Flask-快速启动

1)下载相关软件包

pip install flask

2)创建一个py文件,引入Flask

from flask import Flask

3)然后编写方法,添加注解进行测试

from flask import Flask
​
app = Flask(__name__)
​
# 请求路径是 http://localhost:8080/hello
@app.route('/hello')
def hello_word():
    return 'hello world !'
​
​
if __name__ == '__main__':
    # 启动地址是本机的8080端口,打开调试
    app.run(host='localhost', port=8080, debug=True)

Flask-参数读取

接口需要接收前端的参数,Flash使用其request进行获取参数

一般来说前端传参的方式分为以下几种:


URL携带参数

这种方式是通过 ? 然后在后面拼接参数

使用request.args来获取这些参数,适用于GET请求中的参数。

@app.route("/args")
def param_args():
    name = request.args.get('name', 'default')
    return name

表单数据

使用request.form来获取这些参数,适用于POST请求中的表单数据。

@app.route("/form", methods=['POST'])
def param_form():
    name = request.form.get('name', 'default')
    return name

JSON参数

使用request.get_json()来获取解析后的JSON数据,适用于POST请求中的JSON数据。

@app.route("/json", methods=['POST'])
def param_json():
    name = request.get_json().get('name', 'default')
    return name

路径参数

就是在路径中拼接参数,参考REST风格

在路由定义中使用尖括号来捕获这些参数。

# 这里的name是传递过来的参数
@app.route("/<name>/url", methods=['POST'])
def param_rest(name):
    return name

请求头参数

可以使用request.headers来访问这些请求头参数

@app.route("/head", methods=['POST'])
def param_head():
    name = request.headers.get('name', 'default')
    return name

Flask-文件上传

文件上传也跟获取参数差不多,都是通过flask的request进行获取的

ALLOWED_EXTENSIONS = {'pdf', 'png', 'jpg', 'jpeg', 'gif'}
​
​
# 进行文件名的校验
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
​
​
@app.route("/upload", methods=['POST'])
def upload_file():
    try:
        file = request.files['file']
        if file and allowed_file(file.filename):
            filename = secure_filename(file.filename)  # from werkzeug.utils 包下的方法
            upload_path = Path('../flask_upload')
            if upload_path.exists() is False:
                upload_path.mkdir()
            file.save(os.path.join(upload_path, filename))
            return "upload success"
    except Exception:
        return "upload fail"

注意:

  • secure_filename() 方法是用于确保文件名的安全性,以防止一些恶意操作和潜在的安全漏洞

  • 上传文件到上一个目录的flask_upload文件夹中,如果文件夹不存在,则创建

Blueprint

Blueprint是Flask框架中用于组织和管理应用程序的模块化方式,使用Blueprint可以让flask项目变成多模块化,提高代码的可维护性、可扩展性和组织性。

举个例子:

一个项目中有操作用户的接口,有操作订单的接口,有操作物流的接口;如果这些接口都写在同一个py文件中,会难以维护并且可读性低,所以需要使用Blueprint进行多模块化。用户、订单和物流的接口分别写在不同的文件中

使用步骤

1)创建多个不同的文件,分别编写接口

这里模拟了操作用户的接口,业务代码省略不写

from flask import Blueprint
​
user_blueprint = Blueprint('user', __name__)
​
​
@user_blueprint.route('/get')
def get_user():
    return "this is a user"

这里同上,模拟了订单的接口,先忽略访问路径一致的问题,后面会解决

from flask import Blueprint
​
order_blueprint = Blueprint('order', __name__)
​
​
@order_blueprint.route('/get')
def get_order():
    return "this is an order"

2)创建一个主启动类(主应用程序)

from flask import Flask
​
from my_flask.api.order_controller import order_blueprint
from my_flask.api.user_controller import user_blueprint  # 上面写的user的接口
​
# 创建主程序
app = Flask(__name__)
​
​
# 将Blueprint注入进主程序
def register_blueprints():
    # 将操作user的接口注入主程序,并且访问user接口的所有URL都是以/api/user开头
    app.register_blueprint(user_blueprint, url_prefix='/api/user')
    app.register_blueprint(order_blueprint, url_prefix='/api/order')
​
​
if __name__ == '__main__':
    register_blueprints()
    app.run(host='localhost', port=8080, debug=True)

然后启动主启动类,就能同时访问user和order了,实现了各个模块单独维护的目的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python游戏编程快速上手》第四是一本介绍如何使用Python编写游戏的入门指南。本书由一位经验丰富的作者撰写,注重简洁明了的风格,适合初学者快速上手。 本书首先介绍了Python编程的基础知识,包括语法、变量、循环和条件语句等。之后,书中逐步引导读者学习如何使用Python的游戏编程库,如Pygame。通过实际案例的演示,读者可以快速掌握Pygame的使用方法,并了解游戏开发的基本流程。 《Python游戏编程快速上手》第四不仅仅是一本教学手册,它还提供了各种实用的技巧和技巧,帮助读者克服游戏开发中的常见问题和挑战。书中还包含了一些有趣的小游戏项目,读者可以根据这些案例进行学习和实践。此外,本书还介绍了如何在Python中使用图形和声音资源,以及如何创建简单的人工智能系统。 与其他编程书籍相比,《Python游戏编程快速上手》第四注重实践,通过实际编程项目的实现,读者可以更好地理解和应用所学知识。同时,本书还提供了大量的参考资料和在线资源,方便读者进一步深入学习和拓展。 总之,如果你是初学者想要学习如何使用Python编写游戏,那么《Python游戏编程快速上手》第四将是一个很好的选择。通过本书的学习,你将能够迅速掌握Python的游戏开发技巧,并能够开始动手编写自己的小游戏项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值