此次项目利用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: