【Flask项目】立项准备 # 2

本文详细介绍了如何使用Flask框架进行项目配置,包括创建项目、配置类加载、集成MySQL数据库、连接Redis缓存、启用CSRF保护、配置Session以及集成脚本。在配置过程中,强调了各步骤的关键代码和配置参数,如数据库URI、Redis连接信息、CSRF保护的启用以及Session的持久化设置。通过这些步骤,开发者可以构建一个具备基本安全性和数据存储功能的Flask应用。
摘要由CSDN通过智能技术生成

项目的立项准备大致可以分为7步骤:

1. 创建项目
2. 配置类加载
3. 集成MySQL
4. 集成Redis
5. 开启CSRF保护
6. 集成Session
7. 集成脚本

创建项目:

创建项目时选择flask项目,环境选择已经下好包的环境,模板语言选择Jinja2

配置类加载: 

通过类的方式加载配置信息,

目前的需求只要开启Debug

class Config(object):
    DEBUG = True


app = Flask(__name__)
app.config.from_object(Config)

集成MySQL:

从 flask_sqlalchemy 中导包 SQLAlchemy

实例化SQLAlchemy并配置连接信息:

from flask_sqlalchemy import SQLAlchemy


class Config(object):
    DEBUG = True
    # 格式:mysql://用户名:密码@主机号:端口号/数据库名
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
    # 动态追踪:建议关闭
    SQLALCHEMY_TRACK_MODIFICATIONS = False


db = SQLAlchemy(app)

集成Redis:

从 redis 中导包 StrictRedis

由于连接的主机号及端口号都可能发生变化,因此将其写入配置类中

需要使用时可以通过调用类属性 Config.属性 的方式

实例化StrictRedis并配置连接信息:

from redis import StrictRedis


class Config(object):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379

rs = StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)

开启CSRF保护:

开启CSRF保护的目的是为了防止跨站请求伪造

开启的方式也是十分简单:

from flask_wtf import CSRFProtect

CSRFProtect(app)

集成Session:

从 flask_session 中导包 Session

实例化Session并配置连接信息:

查看要配置哪些信息的方式:

Ctrl + 左键方式点进源码:

发现对应的redis有4个配置信息:

SESSION_REDIS,SESSION_KEY_PREFIX

SESSION_USE_SIGNER,SESSION_PERMANENT

 因此:

from flask_session import Session


class Config(object):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/demo"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    REDIS_HOST = "127.0.0.1"
    REDIS_PORT = 6379
    # session类型
    SESSION_TYPE = "redis"
    # 连接redis数据库
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    # 使用签名
    SESSION_USE_SIGNER = True
    # 存储数据时间(s)
    SESSION_PERMANENT = 60*60*24 # 对应为 1 天


Session(app)

集成脚本:

从 flask_script 中导包 Manager

从 flask_migrate 中导包 Migrate 与 MigrateCommand

配置并通过脚本的形式启动服务器:

 

from flask_script import Manager

manager = Manager(app)

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

初始化Migrate:

from flask_migrate import Migrate, MigrateCommand

manager = Manager(app)
Migrate(app, db)
manager.add_command("mysql", MigrateCommand)

 所有代码:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from redis import StrictRedis
from flask_wtf import CSRFProtect
from flask_session import Session
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand


class Config(object):
    """ 配置信息 """
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = "mysql://root:123456@127.0.0.1:3306/news_20"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    REDIS_HOST = "127.0.0.1"
    REDIS_POST = 6379
    SECRET_KEY = "a1b2c3d4"
    SESSION_TYPE = "redis"
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT)
    SESSION_USE_SIGNER = True
    PERMANENT_SESSION_LIFETIME = 60*60*24


app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
rs = StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
CSRFProtect(app)
Session(app)
Migrate(app, db)
manager = Manager(app)
manager.add_command("mysql", MigrateCommand)


@app.route('/')
def hello_world():
    return 'Hello World!'


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值