Django项目总结

📅 2026/7/28 16:54:54
Django项目总结
项目生鲜类项目属于B2C模式是一个PC端的网页。功能模块用户模块注册、登录、激活、退出、个人中心、地址商品模块首页、详情、列表、搜索haystackwhoosh购物车模块增加、删除、修改、查询订单模块确认订单页面、提交订单下单、请求支付、查询支付结果、评论用户模块注册*使用django默认的认证系统AbstractUser方法名功能描述create user创建用户authenticate登录验证login记录登录状态logout退出用户登录is_authenticated判断用户是否登录login_required装饰器进行登录判断激活*itsdangerous生成签名的token序列化工具dumps loads邮件django提供邮件支持配置参数send_mailcelery整体认知异步任务登录*redis缓存、sessionauthenticate登录验证激活判断login记录登录状态is_authenticated判断用户是否登录login_required装饰器进行登录判断中间件Mixin类退出*logout退出用户登录用户地址*模型类与模型管理类的关系self.model - 获取self对象所在的模型类objects 模型管理类对象celery*使用Redis*存储历史浏览记录的分析过程使用格式list原因历史浏览记录需要多次使用到使用普通的数据库效率不够高而且会增加数据库压力而Redis数据库是内存型数据库也是键值型数据库相比普通数据库访问速度要快很多。商品模块FastDFS分布式的图片存储服务需修改django的默认文件存储系统使用原因一海量存储存储容量扩展方便使用原因二综合nginx提高网站访问图片的效率配置在数据库保存FastDFS返回的ID首页*Redis保存购物车记录使用hash类型存储统计数量、hlen方法页面优化静态化缓解服务器压力celery、celery中nginx更新调用admin管理类的save_model和delete_model后发出celery任务缓存* cache、缓存过期时间更新调用admin管理类的save_model后清除缓存下一次用户访问时就会重新生成缓存目的优化网站性能减少数据库的查询次数防止恶意的攻击如DDOS攻击详情页历史浏览记录的展示SPU和SKU商品列表页*分页页码控制搜索搜索引擎whoosh作用可以对表中的某些字段进行关键词分析建立关键词对应的索引数据。类似目录全文检索框架haystack作用可以帮助用户使用搜索引擎购物车数据传递思路确定前端是否传递数据、传递什么数据、使用什么格式确定前端访问的方式如get、post等确定返回给前端的数据与格式购物车页面前端js*Redis数据库操作*订单订单创建*MySQL表更新每一个订单对应订单数据表中的一条数据每一个订单商品对应订单商品数据表中的一条数据Mysql事务概念要么执行要么全不执行。特性ACIDA 原子性原子性是指事务是一个不可再分割的工作单位事务中的操作要么都发生要么都不发生。C 一致性一致性是指在事务开始之前和事务结束以后数据库的完整性约束没有被破坏。I 隔离性隔离性是指并发的事务是相互隔离的。D 持久性持久性是指在事务完成以后该事务所对数据库所作的更改便持久的保存在数据库之中并不会被回滚。控制语句BEGIN或TRANSACTION开启事务COMMIT提交事务ROLLBAKC回滚到前一个保存点若无保存点会回滚到开启事务前的状态SAVEPOINT 保存点名在事务中创建一个保存点一个事务可以有多个保存点RELEASE SAVEPOINT 保存点删除保存点ROLLBACK 保存点回滚到指定保存点MySQL事务隔离级别Read uncommitted未提交读取就是一个事务可以读取另一个未提交事务的数据Read committed已提交读取就是一个事务要等待另一个事务提交后才能读取数据Repeatable read可重复读就是一个事务只能读到另一个事务修改的已提交了事务的数据这和已提交读取的区别就在于它重复读取的值是不变的Serializable串行化就是只能进行读-读并发只要有一个事务操作一条记录的写那么其他要访问这条记录的事务都得等着。提示值得一提的是大多数数据库默认的事务隔离级别是Read committed比如Sql Server , Oracle。Mysql的默认隔离级别是Repeatable read。订单并发处理*悲观锁乐观锁第一次尝试失败并不意味着失败需多次尝试订单显示查询数据传递显示即可订单支付*第三方对接支付宝通讯加密私钥公钥对接流程项目部署使用uwsgi作为项目的服务器遵循wsgi协议配置nginx作为调度服务器和静态文件提供服务器负载均衡判断请求为动态还是静态动态转发请求给uwsgi静态不需转发自身提供静态文件收集静态文件python manage.py collectstatic转发请求给另外地址用户只是对接Nginx服务器而Nginx接收到请求进行调度完成