项目框架搭建

一、项目搭建: 创建一个manager.py的文件
1. from flask import Flask app = Flask(__name__) @app.route('/index') def
index():return 'index' if __name__ == '__main__': app.run()
二、项目基本配置:先在当前类中定义配置的类,并从中加载配置
.....都是一个文件就省略了 2. app = Flask(__name__) class Config(object): """工程配置信息"""
DEBUG =True app.config.from_object(Config) .....都是一个文件就省略了
三、SQLAlchemy 导入数据库扩展,并在配置中填写相关配置
3. from flask_sqlalchemy import SQLAlchemy ...都是一个文件就省略了 class Config(object):
"""工程配置信息""" DEBUG = True # 数据库的配置信息 SQLALCHEMY_DATABASE_URI =
"mysql://root:mysql@127.0.0.1:3306/my_db1" SQLALCHEMY_TRACK_MODIFICATIONS =
False app.config.from_object(Config) db = SQLAlchemy(app) .....都是一个文件就省略了
四、在终端创建数据库
4.mysql> create database my_db1 charset utf8;
五、Redis 创建redis存储对象,并在配置中填写相关配置
5.import redis ...都是一个文件就省略了 class Config(object): """工程配置信息""" ...都是一个文件就省略了
# redis配置 REDIS_HOST = "127.0.0.1" REDIS_PORT = 6379
app.config.from_object(Config) db = SQLAlchemy(app) redis_store =
redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
.....都是一个文件就省略了
六、CSRF 包含请求体的请求都需要开启CSRF
from flask_wtf.csrf import CSRFProtect ...都是一个文件就省略了
app.config.from_object(Config)...都是一个文件就省略了 CSRFProtect(app) .....都是一个文件就省略了
七、Session 利用 flask-session扩展,将 session 数据保存到 Redis 中
from flask_session import Session .....都是一个文件就省略了 class Config(object): ""
"工程配置信息""" SECRET_KEY =
"EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA" ...都是一个文件就省略了
# flask_session的配置信息 SESSION_TYPE = "redis" # 指定 session 保存到 redis 中
SESSION_USE_SIGNER = True# 让 cookie 中的 session_id 被加密签名处理 SESSION_REDIS =
redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)# 使用 redis 的实例
PERMANENT_SESSION_LIFETIME =86400 # session 的有效期,单位是秒
app.config.from_object(Config)...都是一个文件就省略了 Session(app) .....都是一个文件就省略了
八、Flask-Script与数据库迁移扩展
from flask_script import Manager from flask_migrate import Migrate,
MigrateCommand... manager = Manager(app) Migrate(app, db) manager.add_command(
'db', MigrateCommand) ... if __name__ == '__main__': manager.run()
下面就是简单的代码抽取:

在与 manager.py 同级目录下创建 config.py 文件,用作于项目的配置文件
import redis class Config(object): """工程配置信息""" SECRET_KEY =
"EjpNVSNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54g+HVoknA" DEBUG = True
# 数据库的配置信息 SQLALCHEMY_DATABASE_URI =
"mysql://root:mysql@127.0.0.1:3306/information" SQLALCHEMY_TRACK_MODIFICATIONS =
True # redis配置 REDIS_HOST = "127.0.0.1" REDIS_PORT = 6379 # session 配置
SESSION_TYPE ="redis" # 指定 session 保存到 redis 中 SESSION_USE_SIGNER = True # 让
cookie 中的 session_id 被加密签名处理 SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST,
port=REDIS_PORT)# 使用 redis 的实例 PERMANENT_SESSION_LIFETIME = 86400 # session
的有效期,单位是秒
在 manager.py 中引入 Config 类,直接使用
from config import Config app = Flask(__name__) app.config.from_object(Config)
业务逻辑独立:

在整个项目文件夹中,除了启动文件 manager.py 和配置文件 config.py 放在根目录,其他具体业务逻辑文件都放在一个单独的文件夹内,与
manager.py 同级

manage.py 只做最基本的启动工作,将 app 的创建操作移动到 my_news 的 init.py 文件中

init.py 文件中代码:
import redis from flask import Flask from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect from flask_session import Session from
configimport Config app = Flask(__name__) ####配置 app.config.from_object(Config)
#### 配置数据库 db = SQLAlchemy(app) #### 配置redis redis_store =
redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)#### 开启csrf保护
CSRFProtect(app)#### 设置session保存位置 Session(app)
manage.py 的代码为:
from flask_script import Manager from flask_migrate import Migrate,
MigrateCommandfrom info import app, db ####Flask-script脚本 manager = Manager(app)
####数据库迁移 Migrate(app, db) manager.add_command('db', MigrateCommand)
@app.route('/index') def index(): return 'index' if __name__ == '__main__':
manager.run()
由于文件太大了,不能详细写出来, 如需要全部资料和代码可以去Github中 链接 <https://github.com/Kimi100/News.git>