flask实战(问答平台)

问答平台项目结构搭建

先创建一个配置文件config.py,后面有些配置写在这里
flask实战(问答平台)_第1张图片

#app.py
from flask import Flask
import config

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

@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

再新建一个exts.py和models.py

#exts.py
#flask-sqlalchemy
from flask_sqlalchemy import SQLAlchemy

db=SQLAlchemy()

#models.py
from exts import db

class UserModel(db.Model):
    pass
    
#app.py
from flask import Flask
import config
from exts import db
from models import UserModel

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

#可以让你先创建,再绑定
db.init_app(app)

@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

防止循环引用,如果不加exts.py会导致下面这种情况
flask实战(问答平台)_第2张图片
加了就可以变成这样子

flask实战(问答平台)_第3张图片
下面设置蓝图,用来做模块化的
flask实战(问答平台)_第4张图片

在这里插入图片描述
再在这里新建两个py文件,一个是auth.py和授权相关的,一个是qa.py和问答相关的

#auth.py
from flask import Blueprint

# /auth,后面所有的路由都是以这个开头,比如/auth/login
bp=Blueprint("auth",__name__,url_prefix="/auth")

@bp.route("/login")
def login():
    pass



#qa.py
from flask import Blueprint

bp=Blueprint("qa",__name__,url_prefix="/")

@bp.route("/")
def index():
    pass

再在app.py中导入和绑定

#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)

app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)


if __name__ == '__main__':
    app.run()

User模型创建

先在navicat里新建数据库
flask实战(问答平台)_第5张图片
flask实战(问答平台)_第6张图片

#config.py
# 数据库的配置信息
HOSTNAME = '127.0.0.1'
PORT = '3306'
USERNAME = 'root'
PASSWORD = '123456'
DATABASE = 'zhiliaooa_course'

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

#model.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)
    join_time = db.Column(db.DateTime, default=datetime.now)

#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
from flask_migrate import Migrate

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

# 可以让你先创建,再绑定
db.init_app(app)

migrate = Migrate(app, db)

app.register_blueprint(qa_bp)
app.register_blueprint(auth_bp)

if __name__ == '__main__':
    app.run()

然后运行三步
flask db init(只需第一次操作一下)
flask db migrate
flask db upgrade

然后数据库刷新下就可以看到
flask实战(问答平台)_第7张图片

flask实战(问答平台)_第8张图片

注册页面模型渲染

Flask发送邮件功能实现

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