新闻资讯项目

此次项目利用flask框架,学习掌握相应flask知识;同时也学会如何去利用flask和git进行操作。

工具为pycharm和anaconda,代码托管在gitee中,能够根据需求写出SQLAlchemy、Session、CSRFProtect、redis相关配置

  • 本项目是熟练掌握web应用程序开发流程(主要是后端)
  • 熟悉web应用常见功能实现步骤
  • 熟练掌握Git的使用,提高源代码阅读能力,BUG调试能力,工具使用能力
  • 为后续Django项目打好基础

    项目介绍

  • 类型就是一个新闻类型的网站
  • 使用的是前后端不分离的方式开发
  • 使用Pycharm为项目设置Git版本控制,完成项目的基本配置
  • 使用的技术python+flask+第三方sdk+部署(阿里云)

项目整体

数据库配置

目的:为了项目中用来存储新闻数据和用户数据

redis配置

目的: 缓存访问频率高的内容,存储session信息,图片验证码,短信验证码

session配置

目的:将来用来保存用户的登录信息

csrf配置

目的:保护app,防止csrf(跨站伪造请求)攻击
校验的请求为’POST’ ‘PUT’ ‘PATCH’ ‘DELETE’

循环导包

解决方法:在控制台中,查看到底是那些文件之间产生了循环导包,依次点开所有文件,只需要断掉其中环即可

日志集成

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

.gitkeep忽略日志文件

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

数据库表结构

静态文件集成

目的:为了让用户访问页面
操作流程:在info种创建templates文件夹

首页显示

目的:在用户访问首页的时候可以给用户提供一个完全的页面
操作步骤:
创建template文件夹,在访问根路径的时候使用render_template将index.html渲染出来

网站logo显示

当浏览器访问每个网站的时候都会自动请求一个/favicon.ico接口

只需要在程序中,协商/favicon.ico的接口,然后返回一张图片即可

在flask中需要使用current_app.send_static_file(文件名),该方法会自动去static静态文件中寻找

图片验证码去重完善

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

操作流程:
获取参数

调用generator_captch()生 成图片验证码

存储图片验证码到redis,判断是否有上一次图片验证码,有则删除

返回一张图片,并指定图片格式

短信验证码分析和集成

在获取短信验证码的时候需要携带的参数:手机号,随机字符串(uuid)图片验证码。使用云通讯发送短信,找到官方的demo实例下载

自动提交

目的:在flask通过sqlalchemy的属性配置,让数据库能够自动提交

评论后端实现

操作:判断用户是否登录,获取请求参数,校验参数,为空校验;根据新闻编号取出新闻对象,创建评论对象,设置属性;保存评论道数据库中,返回响应,携带评论数据

对评论的回复和点赞取消点在后端实现

判断用户是否登录,获取数据库相应的参数,参数校验。操作类型进行校验,根据操作类型点赞取消点赞,最后返回响应

阿里云部署

主要是拷贝本地内容到阿里云,利用python WSGI的HTTP服务器

项目思维导图

整体

HTTP通讯流程

json和对象之间的对比

前后端分离和前后端不分离的区别

flask程序部署的方式

专有名词

  • 日志是一种可以追踪某些软件运行时所发生事件的方法

  • 日志等级 DEBUG:程序调试bug时使用
    INFO:程序正常运行时使用
    WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
    ERROR:程序出错误时使用,如:IO操作失败
    CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使用

  • 异步和同步:异步,将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器,然后程序再慢慢地写入数据库。

    同步:当客户端发送请求给服务端,再等待客户端响应的请求时。客户端不做其他的事情

  • axios和ajax:axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样。ajax技术实现了网页的局部数据刷新,axios实现了对ajaxde的封装

  • MVC和MVVM: