[Flask]各种子功能的实现

一、标准Flask架构搭建

        ①config.py

                新建一个文件config.py,在其中进行参数初始化,再使用下面代码加载到app.py(主程序)中

import config
app.config.from_object(config)      #由config.py初始化

        ②exts.py

                用于放置扩展模块(如数据库),可以防止循环引用

                [Flask]各种子功能的实现_第1张图片                [Flask]各种子功能的实现_第2张图片

                 db对象在app.py中进行绑定

from exts import db

db.init_app(app)

         ③blueprint

                将路由从app.py中分离出来,便于开发和维护(模块化)

                可以视为Flask的子模块Flask(__name__)

from flask import Blueprint

bp = Blueprint("auth",__name__,url_prefix="/auth")   #蓝图名,Flask识别标号,url前缀

#由蓝图创建路由
bp.route('/login')
def login():
    pass
from blueprints.qa import bp as qabp
from blueprints.auth import bp as authbp

#----蓝图绑定----#
app.register_blueprint(qabp)
app.register_blueprint(authbp)

二、模型的实现

         ①数据库连接的初始化

                在config.py中写入如下代码,完成配置

#----配置数据库连接参数----#
HostName=
Port =                      #默认为3306,需要自行修改
UserName=                 #默认用户名
Password=
DataBase=

SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{UserName}:{Password}@{HostName}:{Port}/{DataBase}?charset=utf8mb4"

        ②构建模型

class UserModel(db.Model):
    __tablename__="user"
    id = db.Column(db.Integer,primary_key=True,autoincrement=True) #主键
    username = db.Column(db.String(100),nullable=False)
    password = db.Column(db.String(100),nullable=False)
    eamil = db.Column(db.String(100),nullable=False)
    join_time = db.Column(db.DateTime,default=datetime.now,nullable=False)

        ③迁移到数据库中

                 在app.py中进行配置和操作

from models import UserModel
from flask_migrate import Migrate

migrate = Migrate(app,db)

        依次使用以下脚本

flask db init
flask db migrate
flask db upgrade

三、注册页面和登录页面的实现

        ①验证码发送

                需要安装flask-mail组件

pip install flask-mail

                然后要配置邮件服务商,这里以QQ邮箱为例

                在QQ邮箱中:设置-账户,找到POP3/SMTP服务,开启

                 开启后会生成一个授权码,注意保密

                随后在config.py中对邮箱进行配置

#----邮箱配置----#
MAIL_SERVER = 'smtp.qq.ccom'
MAIL_USE_SSL = True
MAIL_POST = 465
MAIL_USENAME = ''            #你的邮箱
MAIL_PASSWORD = ''           #授权码
MAIL_DEFAULT_SENDER = ''     #你的邮箱

                在exts.py中对邮箱对象构建

from flask_mail import Mail
mail = Mail()

                最后再app.py中进行初始化

from exts import mail

mail.init_app(app)

                进行邮件发送

from exts import mail
from flask_mail import Message

@bp.route("/mail/test")
def send_test():
    message = Message(
        subject='邮箱测试',
        recipients=['目标邮箱'],
        body='这是一条测试邮件')
    mail.send(message)
    return "邮件发送成功"

                生成验证码

source = string.digits*4
code = random.sample(source,4)  #结果为列表
codestr = "".join(code)         #第一个参数为连接符号,这里设置为空
print(codestr)

你可能感兴趣的:(Python,flask,python,后端)