本实例为单独的项目,所以建议使用虚拟环境。虚拟环境安装的包不会影响其它环境。

提前安装包:

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文件用来存放用户和帖子相关信息。

至此,框架已成雏形。

 

posted on 2024-03-27 14:36  子线  阅读(28)  评论(0)    收藏  举报