新闻详情——框架搭建

第一步:立项

新建一个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()

 

posted on 2020-09-26 17:36  绪酱  阅读(131)  评论(0编辑  收藏  举报