- 前台全部采用api接口的方式(json形式交互)。 后台采用传统的渲染web页面的方式。
- 目录结构采用功能式的分层结构。flask项目的结构浅议
- 服务端(debine/ubuntu)选型: 最前端是nginx, 其后是gunicorn。
- python版本3.5 (2.7也适用)。
- 集成支付宝,微信的支付。
- 将遇到并解决web开发中常见的大部分场景。
登录/注册, (ok)
邮件,
验证,(restful is ok, admin is ok), 自搭脚手架
事件监听,
异常处理,
orm,(ok)
session管理,(ok)
cache,
文件上传下载,(ok)
安全保证,(deving)
在线支付,
日志管理,
性能提升,
预留分布式架构
...
- pip3 install -r requirements.txt
- 配置nginx_flask_online_store.config文件, 设置hosts解析到本地 127.0.0.1 fos.dev api.fos.dev admin.fos.dev
- 在instance文件下新建config.py文件, 填写个人隐私配置, 覆盖最外层的config.py
- 配置mysql(默认采用mysql, 可选数据库)
- python(3) manage.py db_create #新建数据库
- python(3) manage.py schema_create #新建表
- python(3) run.py ...
- 基本目录结构 --ok
- 基本views(路径) --ok
- 数据库与表的设计 --dev
- user处理 --dev
- products --dev
- orders --waiting
- paying --waiting
- server_config --waiting
- ...
- Flask
- Flask-Cache
- Flask-DebugToolbar
- Flask-Exceptional
- Flask-Login
- Flask-Mail
- Flask-RESTful
- Flask-Script
- Flask-SqlAlchemy
- Flask-Uploads
- Flask-WTF
- gunicorn
- greenlet
- pymysql
- requests ...
restparsers文件夹中,存放着所有与验证相关的代码.
具体验证策略是通过type, 例如register_parser中的:
register_parser.add_argument('email', required=True, nullable=False, type=lambda v: check(v, email_regex), help="email cannot be blank!")
验证写好之后,在views中调用, 例如views/api/users.py
from ...restparsers.register_parser import register_parser
class UserView(Resource):
def post(self, id=None):
args = register_parser.parse_args()
user = User()
user.save(args)
最外层的manager.py文件, 默认是python3的输出样式, 2版本需要手动修改一下print
例如 python3 manager.py db_create 对应的是其中的 db_create函数