Table of Contents
图书案例
之前看过一些flask项目了,这个没什么新鲜的,就简单浏览了一下复习。
如果前端发送的请求体数据是json格式,后端get_json会解析成字典(需要前端设置contentType)
req_dict=request.get_json() |
前端发送json字符串:
var req_json=JSON.stringify(data) |
$.ajax({ url:"/delete_book", type:"post",//请求方式 data:req_json,//向后端发送 contentType:"application/json",//向后端发送 dataType:"json",//后端返回 success:function(resp){ if(resp.code==0){ location.href="/" } } }) |
后端向前端返回json:
from flask import jsonify |
return jsonify(code=0,message="OK") |
Migrate和Mail
01 migrate使用简介
Migrate可将模型类的修改同步到数据库
pip install flask-migrate |
Migrate依赖于flask-script
from flask_script import Shell,Manager |
Migrate为执行者,MigrateCommand为执行命令
from flask_migrate import Migrate,MigrateCommand |
使用Manager启动
app = Flask(__name__) manager=Manager(app) |
Migrate会接收db配置,并把自己塞入app中
migrate=Migrate(app,db) |
添加MigrateCommand交给manager,分类为db
manager.add_command('db',MigrateCommand) |
启动时:
if __name__ == '__main__': manager.run() |
02 migrate使用
from flask_script import Shell,Manager from flask_migrate import Migrate,MigrateCommand class Config(object): SQLALCHEMY_DATABASE_URL="mysql://root:mysql@127.0.0.1:3306/database_9" SQLALCHEMY_TRACK_MODIFICATIONS=True
app.config.from_object(Config) db=SQLAlchemy(app) |
manager=Manager(app) migrate=Migrate(app,db) manager.add_command('db',MigrateCommand) |
if __name__ == '__main__': manager.run() |
启动时执行数据库命令:会生成migrations文件夹
python author_book.py db init |
添加新字段:
class Author(db.Model): __tablename__="authors" id=db.Column(db.Integer,primary_key=True) name=db.Column(db.String(64),unique=True) books = db.relationship("Book",backref="author") email=db.Column(db.String(128),unique=True) |
生成迁移文件:
python author_book.py db migrate |
使之在数据库生效:
python author_book.py db upgrade |
对这次迁移做备注:
python author_book.py db migrate -m 'add email' |
查看历史操作与状态码:
python author_book.py db history |
回滚到该状态码状态:
python author_book.py db downgrade ee602d992e79 |
03 mail使用
基于python内置的smtplib
在邮箱服务中开启SMTP(用来发邮件),生成授权码urspjdbdvtvrbjia
在flask配置:
from flask_mail import Mail,Message |
app = Flask(__name__) |
字典添加多个键值对:
app.config.update( MAIL_SERVER='smtp.qq.com', MAIL_PORT=465, MAIL_USERNAME='2753***@qq.com', MAIL_PASSWORD='urspjdbdvtvrbjia' ) |
使用Message类的对象发送:
msg=Message("test",sender='2753***@qq.com',recipients=['laugoon@outlook.com']) msg.body="test" mail.send(msg) |