flask笔记7:图书案例、Migrate和Mail

Table of Contents

 

图书案例

Migrate和Mail

01 migrate使用简介

02 migrate使用

03 mail使用


图书案例

之前看过一些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:[email protected]: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=['[email protected]'])

msg.body="test"

mail.send(msg)

 

你可能感兴趣的:(J2EE等前后端分离,flask,migrate)