本文章仅作为个人笔记
文末有福利
flask官网
flask项目git地址
参考的git项目
本人git项目
初始化项目(PyCharm)
- 创建项目(使用PyCharm)
- 至此最简单的flask项目完成
- 根据大众需求优化项目结构(参考书籍(Flask+Web开发:基于Python的Web应用开发实战.pdf)),具体详情可查看
- app目录
- app目录包含所有业务代码及静态资源、数据库对象
- main目录可包含主业务逻辑
- static目录包含所有静态资源
- templates目录包含所有页面资源
- user目录为自定义目录,可自行定义
- __init__.py文件为python文件夹初始化文件,用于初始化数据和写项目初始化方法
- migrations目录
- migrations目录包含数据库创建更新等相关信息,有命令 python3 manage.py db init 及 python3 manage.py db migrate 创建更新
- tests目录
- test目录包含测试相关代码
- config.py文件包含不同环境下配置内容
- .env文件包含隐私配置内容
- requirements.txt包含所有需要的框架和版本
- app目录
访问路由相关
最简单的路由
@app.route('/') def index(): return 'hello world.'
路由分离嵌套,例如
from .main import main as main_blueprint
app.register_blueprint(main_blueprint, url_prefix=’/main’)第一句为从app目录的main目录中引入main包并命名为main_blueprint
- 第二句为注册包含至主路由且以/main开头
- 如果想包含分离多个模块可创建多个目录多次注册
创建的目录必须包含__init__.py文件且编写类似如下内容,例如
from flask import Blueprint
user = Blueprint(‘user’, name)
from . import views, errors- 第一句为引入相应类包
- 第二句为初始化Blueprint对象,’user’内容可自行定义
- 第三局为导入编写的相应的业务代码逻辑
限定请求方式,例如
@app.route(‘/’, methods=[‘GET’,’POST’])
def index():
return ‘hello world.’获取请求url传参REST,例如
@user.route(‘/’, methods=[‘GET’, ‘POST’])
def index(user_id):
return ‘hello world.’ + str(user_id)获取post请求参数
先导入必要变量
from flask import request
获取form表单参数
request.form.get(“key”, type=str, default=None)
获取json数据
request.get_json()
获取text数据
bytes.decode(request.get_data())
更多可参考官方文档
- 数据库相关
- 初始化数据库(记得在配置文件(config.py)中配置数据库配置例:SQLALCHEMY_DATABASE_URI = mysql+mysqldb:/root:root@127.0.0.1.:3306/test?charset=utf8)
方式一:
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) db = SQLAlchemy(app)
方式二:例如
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app) db.app = app db.init_app(app) return app
插入数据
from . import db
from .models import User
user_info = User(user_name=’user name’, age = 18)
db.session.add(user_info)
db.session.commit()
db.session.close()查询数据
from . import db
from .models import User
users = db.session.query(User).filter(User.user_name == ‘user name’).all() # 查询所有
user = db.session.query(User).filter(User.user_name == ‘user name’).scalar() # 查询单条,当无数据时返回None更新数据
from . import db
from .models import User
user = bd.session.query(User).filter(User.user_name == ‘user name’).scalar()
user.age = 20
db.session.add(user)
db.session.commit()删除数据
from . import db
from .models import User
user = db.session.query(User).filter(User.user_name == ‘user name’).scalar()
db.session.delete(user)
更多可参考官方文档
- 最后送一本福利书