Flask实战-QA平台

Flask实战-QA平台

Flask

基本平台搭建

QA(项目名称)

  • blueprint
    • auth.py(作者蓝图,关于作者的视图)
    • qa.py(问答蓝图)
  • static(静态文件)
  • template(网页模板)
  • app.py(主程序)
  • config.py(数据配置文件,防止相互引用)
  • exts.py(扩展)
  • models.py(模型文件)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
app.py

from flask import Flask
import config
from exts import db
from models import UserModel
from blueprints.qa import bp as qa_bp
from blueprints.auth import bp as auth_bp

app = Flask(__name__)
# 绑定配置文件
app.config.from_object(config)

db.init_app(app)

# 将引入的blueprint绑定
app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)
@app.route("/")
def hell():
return "hello"
if __name__ == "__main":
app.run()
1
2
3
4
5
6
7
8
9
10
qa.py

from flask import Blueprint

# 问答网页在首页,前缀只需要根路径
bp = Blueprint("qa",__name__,url_prefix="/")

@bp.route("/")
def index():
pass
1
2
3
4
5
6
7
8
9
10
auth.py

from flask import Blueprint

# /auth
bp = Blueprint("auth",__name__,url_prefix="/auth")

@bp.route("/login")
def login():
pass
1
2
3
4
5
6
7
modeles.py


from exts import db

class UserModel(db.model):
pass
1
2
3
4
5
6
exts.py

# 扩展插件
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

User模型创建

现在models中设置好

1
2
3
4
5
6
7
8
9
10
11
12
models.py

from exts import db
from datetime import datetime
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)
email = db.Column(db.String(100), nullable=False,unique = True)
# 账号加入时间
join_time = db.Column(db.DateTime,default = datetime.now)

在config.py中设置好数据库连接信息

1
2
3
4
5
6
7
8
9
10
11
12
13
# MySQl所在的主机名
HOSTNAME = "127.0.0.1"
#MySQl监听的端口号
PORT = "3306"
#连接MySQl的用户名是用户自己设置的
USERNAME = "root"
#连接数据库的密码
PASSWORD = "1111"
# 数据库中创建的数据库名称
DATABASE = "qa"

DB_URI = "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4".format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI

然后在app.py中操作flask_migrate连接和更新数据库

网页文件和静态文件准备

注册功能

邮箱验证功能

安装flask邮箱支持

1
pip install falsk-mail

表单验证