25、Flask实战第25天:项目结构搭建

创建一个虚拟环境bbs,并安装flask框架

#cmd进入DOS窗口

mkvirtualenv bbs
pip install flask

在本地磁盘D新建项目目录:bbs

打开pycharm,创建flask项目

新建两个文件,config.py( 配置文件)、exts.py(用于第三方库)

项目分为前台(front)、后台(cms)、公共(common)

因此这里配置上面3个蓝图

新建一个python package命名为apps,在apps下新建三个python package分别命名为:cms、common、front

这3个蓝图都会有自己的数据模型和视图,则在它们各自下新建文件models.py、views.py,前台和后台肯定会有表单验证,因此也新建forms.py

cms.view.py

from flask import Blueprint

bp = Blueprint('cms', __name__, url_prefix='/cms')

@bp.route('/')
def index():
    return 'cms index'

common.py

from flask import Blueprint

bp = Blueprint('common', __name__, url_prefix='/common')

@bp.route('/')
def index():
    return 'common index'

front.py

from flask import Blueprint

bp = Blueprint('front', __name__) #因为前台是直接访问就不用加url_prefix

@bp.route('/')
def index():
    return 'front index'

编辑cms.__init__.pycommon.__init__.pyfront.__init__.py,这样做的好处就是可以这样导入蓝图:from apps.cms import bp

from .views import bp

编辑bbs.py注册蓝图,该文件不编辑任何视图及url

from flask import Flask
import config
from apps.cms import bp as cms_bp
from apps.common import bp as common_bp
from apps.front import bp as front_bp

app = Flask(__name__)
app.config.from_object(config) #引入配置文件

app.register_blueprint(cms_bp)
app.register_blueprint(common_bp)
app.register_blueprint(front_bp)

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

编辑config.py开启DEBUG模式

DEBUG = True

最后启动项目

配置数据库信息创建数据库

MySQL创建数据库bbs

address: 127.0.0.1:3306
database: bbs
username: root
password: 123456

安装相关的库

workon bbs #进入虚拟环境
pip install pymysql
pip install flask-sqlalchemy
pip install flask-script
pip install flask-migrate

编辑配置文件config.py配置数据库连接信息

DEBUG = True

#MySQL Database
HOST = '127.0.0.1'
PORT = '3306'
USERNAME = 'root'
PASSWORD = '123456'
DATABASE = 'bbs'

DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset-utf8'.format(username=USERNAME,
                                                                                        password=PASSWORD,
                                                                                        host=HOST,
                                                                                        port=PORT,
                                                                                        db=DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False  

编辑exts.py初始化SQLAlchemy

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

创建一个manage.py用来写迁移脚本

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from bbs import app
from exts import db

manager = Manager(app)

Migrate(app, db)
manager.add_command('db', MigrateCommand)


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

在主程序bbs.py给db传入app

from exts import db
...

db.init_app(app)

初始化迁移脚本

D:\bbs>workon flask-env
(flask-env) D:\bbs>python manage.py db init

 

posted @ 2018-08-05 13:35  sellsa  阅读(1693)  评论(0编辑  收藏  举报