基础文件:按以下代码在浏览器中输入http://127.0.0.1:8080/hello进行代码效果演示
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 |
from flask import Flask, make_response app = Flask(__name__) # config对应同目录下的config.py(文件中定义DEBUG = True) app.config.from_object('config') # 默认设置/hello/会自动将/hello重定向到/hello/ @app.route('/hello', methods=["GET"]) def hello(): headers = { # 默认为text/html 'content-type': 'text/plain', # 设置跳转链接 'location': 'http://alanhou.org' } response = make_response('Hello World!', 301) response.headers = headers return response # response 的另一种写法 # return 'Hello World!', 301, headers # return 'Hello World!' # @app.route("/profile/<int:uid>") int用于指定数据类型,uid 作为一个变量 # url设置的另一种方法 # app.add_url_rule('/hello', view_func=hello) # 主入口文件时执行 if __name__ == '__main__': # 生产环境中使用nginx+uwsgi app.run(host='0.0.0.0', debug=app.config['DEBUG'], port=8080) |
endpoint
Flask打造点单小程序笔记
主流框架
Flask
Django
Web2py
Bottle
Tornado
安装
1 2 3 |
pip install flask # 设置外网可访问,开通调试 app.run(host='0.0.0.0',debug=True) |
蓝图路由规划 Blueprint
链接管理器 url_for
日志系统 app.logger.debug() # warning, error
错误处理:@app.errorhandler…
数据库 ORM:
1 2 3 4 5 6 |
# 安装 pip install flask_sqlalchemy pip install mysqlclient # 连接 MySQL app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@127.0.0.1/db_name' db = SQLAlchemy(app) |
MVC框架推荐结构
自动生成 ORM代码
1 2 3 |
pip install flask-sqlacodegen # 根据数据表生成 model 文件 flask-sqlacodegen 'mysql://root:@127.0.0.1/food_db' --tables user --outfile "common/models/User.py" --flask |
常见问题
1、Invalid default value for ‘created_time’ timestamp field
1 2 3 4 5 |
# 产生错误 SQL语句 `created_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '插入时间' # /etc/my.cnf sql-mode = "STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" |