学习笔记1 Flask项目实战----新闻咨询项目

一、 项目介绍

特点

  • 1.类型是一个新闻类型的网站
  • 2.使用的是前后端不分离的方式开发
  • 3.使用的技术:python3.X+flask+第三方sdk(云通讯+七牛云)+部署(阿里云)

二、配置文件抽取

目的:方便以后做扩展、维护、管理更加高效
操作流程:

  • 1.定义了config文件
  • 2.将config配置类抽取到config文件中
  • 3.提供了3种环境下的配置类信息
  • 4.提供了一个config_dict的统一访问入口字典

三、初始化信息抽取

目的:将初始化信息抽取到单独的文件,方便统一的管理
操作流程:

  • 1.将manager中的初始化信息抽取到info的Init文件中
  • 2.定义了create_app方法,接收一个config_name参数
  • 3.根据config_name加载不同的环境下的配置信息
  • 4.再返回一个完整的app给manager 文件

四、视图函数抽取

目的:视图函数是用来处理对应业务的,可以有很多,应该使用蓝图进行统一管理
操作流程:

  • 1.创建了modules 模块,用来管理所有蓝图的
  • 2.在modules底下创建了index包
  • 3.在index中创建了index_blue蓝图,创建views文件,并使用index_blue装饰视图函数
  • 4.在create_app方法内部,注册index_blue到app 中

五、循环导包

  • 解决办法:在控制台中,查看到底是哪些文件之间产生了循环导包,依次点开所有的文件,只需要想办法断开其中的一环即可
    在这里插入图片描述

六、redis 存储设置

在这里插入图片描述

问题:

  • redis_store创建在了create_app方法内部,外界不能导入使用
  • 在create_app方法外部创建一个空的redis_store使用global装饰方法内部的redis_store即可

七、日志信息集成

目的:

  • 1.记录用户的行为
  • 2.记录分析软件的问题
  • 3.便于给产品经理提供设计依据

操作流程:

  • 1.定义好log_file方法,拷贝日志记录方法进来
  • 2.在create_app方法中调用即可
# 设置日志的记录等级
 
logging.basicConfig(level=logging.DEBUG) # 调试debug级
 
# 创建日志记录器,指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
 
file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024*1024*100, backupCount=10)
 
# 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
 
formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
 
# 为刚创建的日志记录器设置日志记录格式
 
file_log_handler.setFormatter(formatter)
 
# 为全局的日志工具对象(flask app使用的)添加日志记录器
 
logging.getLogger().addHandler(file_log_handler)

八、日志配置抽取

目的:为了便于管理不同环境下的日志级别
操作流程:

  • 1.在config配置文件中,给DevelopConfig,ProductConfig设置不同的级别
  • 2.在调用create_app方法的时候,传递对应环境的key值
  • 3.取出对应环境下的日志级别,将日志级别传递到log_file方法中

九、gitkeep忽略日志文件

  • 目的:可以让logs空文件夹能够被提交到git仓率

十、表结构.

目的:主要了解新经咨询中的主要7张表之间的关系
注意点:需要查看下面这张图
在这里插入图片描述

十一、数据库迁移

目的:将模型迁移成数据库的具体表
操作流程

  • 1.导入models,constants文件到info中
  • 2.将create_app中的Sqlalchemy(app),改成两句话
    • 1.db=Sqlalchemy(),定义在create_app外部
    • 2.db.init_app(app),定义在create_app内部
  • 3.在manager.py文件中进行迁移
    • 1.导入Manager,Migrate,MigrateCommand
    • 2.创建manager对象,管理app
    • 3.使用Migrate,关联app,db
    • 4.给manager添加一条操作指令
    • 5.执行迁移(init,migrate,upgrade)

十二、静态文件的集成

目的:为了给用户提供访问页面
操作流程:将static文件夹添加到info里面,然后使用git管理起来

十三、首页显示

目的:在用户访问首页的时候可以给用户提供一个人完整的页面
操作步骤:

  • 1.在info中,创建templates文件夹
  • 2.将static/news中的index.html拖入到templates、news文件夹中
  • 3.在访问根路径的时候使用render_template将index.html渲染出来

十四、网站logo显示

目的:显示网站的一个标识,显示在title中
注意点:

  • 1.浏览器访问每个网站的时候会自动去请求一个/favicon.ico的接口
  • 2.只需要在程序中,写上/favicon.ico的接口,然后返回一张图片即可
  • 3.在flask中需要使用current_app.send_static_file(‘文件名’)
    • 1.send_static_file(‘文件1’),该方法会自动去static静态文件夹中寻找文件1

十五、图片验证码分析

目的:为了保证注册,登陆的用户是个真实的用户在操作,为了去获取短信验证码
在这里插入图片描述
注意点:

  • 1.在服务器内部保存图片验证码的时候,前端需要带一个随机字符串(uuid)过来
  • 2.uuid作为key,图片验证码的值作为value存储

十六、图片验证码集成

目的:便于程序调用,生成图片验证码
操作流程:

  • 1.在info中创建utils包,将captch导入即可

十七、图片验证码视图函数

目的:为了方便前端调用,获取图片验证码信息

十八、图片验证码去重完善

目的:不能在服务端存储多份图片,容易导致后端的服务器内存不足
操作流程:

  • 1.获取参数cur_id,pre_id
  • 2.调用generator_captch()生成图片验证码
  • 3.存储图片验证码到redis
  • 4.判断是否有上一次图片验证码,如果有则删除
  • 5.返回一张图片,并制定图片格式

在这里插入图片描述
报错原因:redis没有开启
解决措施:在redis目录下shift+鼠标左键,进入终端,redis-server

参考链接: https://www.bilibili.com/video/BV1uZ4y1p77F?p=31&spm_id_from=pageDriver.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值