本实例为单独的项目,所以建议使用虚拟环境。虚拟环境安装的包不会影响其它环境。
提前安装包:
1、pymysql:数据库驱动
2、flask-sqlalchemy:flask中使用ORM操作数据库
3、cryptography:加解密
4、flask-migrate:将ORM模型的变更同步至数据库。
框架组织结构如下图:包括,blueprints,models,static,templates等。

一、主程序代码:
# encoding: utf-8
from flask import Flask
import config
from exts import db
from blueprints.cms import bp as cms_bp
from blueprints.front import bp as front_bp
from blueprints.user import bp as user_bp
app = Flask(__name__)
# 绑定配置文件,所需要的信息都从config文件中读取.
app.config.from_object(config.DevelopmentConfig)
# config配置文件中的db是未绑定的,通过init_app绑定app
db.init_app(app)
# 注册蓝图
app.register_blueprint(cms_bp)
app.register_blueprint(front_bp)
app.register_blueprint(user_bp)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
二、config.py文件:用来存放配置项。
config.py
# encoding: utf-8
# 这里后续可以改造为读取配置文件.
# 主机IP地址
HOSTNAME = "127.0.0.1"
# MySql的监听端口号,默认3306
PORT = 3306
# 用户名,密码,自己设置的
USERNAME = "root"
PASSWORD = "root"
# MySql上创建的数据库名称.
DATABASE = "python_bbs"
class BaseConfig:
SECRET_KEY = "714514386@qq.com"
SQLALCHEMY_TRACK_MODIFICATIONS = False
class DevelopmentConfig(BaseConfig):
SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"
三、exts.py文件:用来防止循环应用。
exts.py
# encoding: utf-8
# 为了防止循环引用,创建这样一个文件.
from flask_sqlalchemy import SQLAlchemy
# 创建空的db对象,然后在app.py中绑定db,并完成初始化.
db = SQLAlchemy()
四、blueprints模块:不同模块的视图函数分别放在蓝图中。如果统一放在app.py中,对后期维护来说可能就会很头疼。
1、创建包blueprints

2、包下创建cms.py,front.py,user.py文件。
cms.py
# encoding: utf-8
from flask import Blueprint
bp = Blueprint("cms", __name__, url_prefix="/cms")
front.py
# encoding: utf-8
from flask import Blueprint
# front文件是面向前台的,就是所谓的首页.所以前缀给了空.
bp = Blueprint("front", __name__, url_prefix="")
@bp.route("/")
def hello_world():
return "Hello world!!!"
user.py
# encoding: utf-8
from flask import Blueprint
bp = Blueprint("user", __name__, url_prefix="/user")
五、models模块。模块化ORM模型
1、创建包models (同四)
2、在models下创建user.py,post.py文件用来存放用户和帖子相关信息。
至此,框架已成雏形。
浙公网安备 33010602011771号