Flask作为Python在WEB建站的框架,比Djiango显得小巧灵活,使用也更加自由,笔者作为一个比较自由的使用者,偏好于Flask的适用,就此将其建站基本框架结构和其中部分技术点做简略描述。
IDE:PyCharm
数据库:MySQL
1. 需要依赖的包
- Flask(Jinja, Werkzeug)
- Flask-Migrate
- Flask-MySQLdb
- Flask-SQLAlchemy
- Flask-Script
Script主要是用来管理命令行,SQLAlchemy是ORM,MySQLdb数据库mysql中间件驱动,Migrate是做数据迁移用的
2. 目录文件结构
+Project 项目总目录
+app 应用程序目录
+migrations 数据迁移目录
+models 数据模型目录
+static WEB静态文件目录
+templates 页面模板目录
-config.py 配置文件
-exts.py 避免循环引用,创建db的地方
-manage.py 管理命令行(主要用于数据迁移)
-run.py WEB站点启动入口
- app目录则是存放所有WEB站点应用程序的地方,可以根据具体应用需求分成不同的blueprint进行结构安排。
- models目录是存放数据模型的,针对数据库表特别多,为了方便管理,数据模型可以单独存放到一个目录中,如果数据库表很少的项目,可以将数据模型放到根目录中或者app目录中。
- static是存放WEB站点静态文件的目录如:css, js, images等。
- templates是存放页面模板的目录,可以根据页面结构安排模板的子目录结构。
- migrations目录是数据迁移自动生成的目录,可以不用管。
- config.py是整个站点的配置信息,包含数据库连接,SECRET_KEY的设置等。
- manage.py进行数据迁移管理,基本固定模式
- run.py启动入口,模式也相对固定
3. config.py
import os
from datetime import timedelta
class Config(object):
DEBUG = False
TESTING = False
#密钥
SECRET_KEY = os.urandom(24)
#Session时长(默认是31天)
PERMANENT_SESSION_LIFETIME = timedelta(days=31)
#开发环境
class DevelopmentConfig(Config):
DEBUG = True
driver = 'mysql'
user = 'root'
pwd = 'root'
host = 'localhost'
port = '3306'
dbname = 'db_demo1'
SQLALCHEMY_DATABASE_URI = '{}://{}:{}@{}:{}/{}'.format(driver, user, pwd, host, port, dbname)
SQLALCHEMY_TRACK_MODIFICATIONS = True
class ProductionConfig(Config):
DEBUG =