zoukankan      html  css  js  c++  java
  • 新闻详情——框架搭建

    第一步:立项

    新建一个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()
  • 相关阅读:
    《动手学深度学习》系列笔记—— 1.3 多层感知机
    angular 9.1.0发布,下一个版本:angular10
    postgresql 两行数据时间之差
    abp zero bug
    docker nginx angular 刷新错误,404错误
    EF Core 新特性——Owned Entity Types
    identityServer4 中的概念(Scope,claim)
    程序员工作时间简单分析
    吐槽下阿里云栖大会购票系统
    打造适合你的ABP(1)---- 完善日志系统
  • 原文地址:https://www.cnblogs.com/Moodsfeelings/p/13735885.html
Copyright © 2011-2022 走看看