当我谈Flask的时候我在谈些什么

目标:使用Flask搭建一个前后端完全分离的系统
(灵感来自于企业级springboot+react)
https://developer.okta.com/blog/2018/12/20/crud-app-with-python-flask-react#define-the-python-model-schemas
技术:
前端:react
后端:flask

要注意的事项:
Flask自带的默认的服务器是单线程模式的,也就是说,如果同一时间有多个请求,那么flask自带服务器只会串行处理。

生产环境的部署
可以热部署吗?在不中断服务的情况下进行
重新发布的项目的本质就是进程的重启
gunicorn + supervisor

框架要实现的基本需求
基本签名检查
登录状态判断
解除同源策略的限制
返回一个固定格式的json格式数据
全局异常处理
mysql数据库访问
基本的分页,数据源处理,数据源切换
redis访问
oss访问
多个环境切换
生产环境部署
会用到的一些包和技术
flask
marshmallow
flask-cors
pyjwt

Flask的一些概念

from flask import g, request 中的g和request
before_request
after_request
程序上下文,请求上下文
current_app
g
request
session

路由映射
使用app.url_map可以查看映射表

模版jinja2
很重要的一个模版函数super(),当你想在父模版的基础上进行修改,同时呢又不想重新整个父模版,可以调用super()

数据库
pip install flask-sqlalchemy
flask-sqlalchemy 多条件查询的使用技巧

如何能够实现mybatis那种如果参数为空或者为null,这个条件就不算?
在使用sqlalchemy的时候可以动态的构造关键字参数字典,最后把参数字典传给filter_by

        if app is not None and app != '':
            tmp['app'] = app
        if env is not None and env != '':
            tmp['env'] = env
        print(tmp)
        urls = FrontUrl.query.filter_by(**tmp).order_by(FrontUrl.weight.desc())
        return render_template("ql/url.html", urls=urls)

2019-03-23我忽然意识到及时回信息的重要性

posted @ 2022-03-06 10:38  叶常落  阅读(43)  评论(0编辑  收藏  举报