新闻详情——框架搭建
第一步:立项
新建一个flask项目,命名为flask_latest,在选择我们之前设置好的环境
第二步:MySQL集成
from flask import Flask from flask_sqlalchemy import SQLAlchemy 4 class Config: DEBUG = True # 配置MySQL数据库连接信息,真实开发中要使用MySQL数据库的真实ip地址 SQLALCHEMY_DATABASE_URI = "mysql://root@127.0.0.1:3306/news_it04" # 动态追踪修改设置,如未设置只会提示警告 SQLALCHEMY_TRACK_MODIFICATIONS = False app = Flask(__name__) app.config.from_object(Config) db = SQLAlchemy(app) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
MySQL创建数据库操作
create database new_it04 charset utf8;
第三步:Redis集成
from flask import Flask from flask_sqlalchemy import SQLAlchemy from redis import StrictRedis class Config: DEBUG = True # 配置MySQL数据库连接信息,真实开发中要使用MySQL数据库的真实ip地址 SQLALCHEMY_DATABASE_URI = "mysql://root@127.0.0.1:3306/news_it04" # 动态追踪修改设置,如未设置只会提示警告 SQLALCHEMY_TRACK_MODIFICATIONS = False REDIS_HOST = "127.0.0.1" REDIS_PORT = 6379 app = Flask(__name__) app.config.from_object(Config) db = SQLAlchemy(app) redis_store = StrictRedis(host = Config.REDIS_HOST,port= Config.REDIS_PORT) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run()
测试redis是否成功,进入cmd,打开redis-cli
@app.route('/') def hello_world(): redis_store.set("name","tangqiang") return 'Hello World!'
下面表示运行成功
第四步:CSRF启动
from flask_wtf import CSRFProtect ... #开启CSRF保护 CSRFPortect(app)
第五步:session设置
from flask import Flask,session ... @app.route('/') def hello_world(): # # 测试Redis连接是否成功 # redis_store.set("name", "tangqiang") # 测试session session["age"] = 20 return 'Hello World!'
运行之后,会发现报错,是因为还么有设置secret_key
设置密钥:
#配置类 class Config(object): """配置文件的加载""" # 项目密钥:CSRF/session SECRET_KEY = "ldkjsandsaoskdasjnd"
配置好之后,会发现,session写入在了cookie中
我们发现,session还是放到了cookie中,这并不安全,我们就放在服务器存储中
from flask_session import Session ... #指定session存储在后端的位置 Session(app)
我们并没有指定存放在哪里,这时候我们需要看一下源码
这个是源代码中详细的配置信息
SESSION_REDIS:用来指定session存储在后端的位置
SESSION_KEY_PREFIX:用来指定存储在redis中,它的前缀是什么,默认是“session”,所以一般不回去修改的
SESSION_USE_SIGNER:是否使用签名,这个就是我们之前设置的SECRET_KEY,签名是为了数据的安全,当然要使用
SESSION_PERMANENT:字面意思session永久存储,ctrl加左键打开下面这个
会发现它的默认是31天
这个时候我们不想让他存活太久,可以再下面做修改,让他只存活一天
#配置类
class Config: ... SECRET_KEY = "ndkasjdalusiashdasjhb" #设置项目密钥 SESSION_TYPE = 'redis' #指定redis来存储,但只是告诉我们要用redis来存储 # SESSION_REDIS = StrictRedis(host=REDIS_HOST,port=RuntimeError) #指定redis存储在后端的位置 SESSION_USE_SIGNER= True #是否使用我们设置的SECRET_KEY密钥 SESSION_PERMANENT = 60*6*24 #存活时间,我们设置一天,默认是31天
我们先清除之前redis中的缓存,在删除之前第一次保存在浏览器的cookie
没有问题,再看redis
看上去get出了一段乱码,但只需要知道它是下面的内容就行了
第六步:脚本命令集成和数据库迁移
from flask_script import Manager from flask_migrate import Migrate, MigrateCommand ... # 创建脚本管理器对象 manager = Manager(app) # 让迁移和app和数据库建立关系 Migrate(app, db) # 将数据库迁移的脚本添加到manager manager.add_command('mysql', MigrateCommand) ... if __name__ == '__main__': manager.run()