随笔分类 -  Django

摘要:Django实现MySQL读写分离 1. 增加slave数据库的配置 DATABASES = { 'default': { # 写(主机) 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'HOST': '192.168.103.158', # 数据库主机 阅读全文
posted @ 2021-06-05 22:56 foreast 阅读(102) 评论(0) 推荐(0) 编辑
摘要:商品详情页面静态化 提示: 商品详情页查询数据量大,而且是用户频繁访问的页面。 类似首页广告,为了减少数据库查询次数,提升页面响应效率,我们也要对详情页进行静态化处理。 静态化说明: 首页广告的数据变化非常的频繁,所以我们最终使用了定时任务进行静态化。 详情页的数据变化的频率没有首页广告那么频繁,而 阅读全文
posted @ 2021-06-05 21:54 foreast 阅读(229) 评论(0) 推荐(0) 编辑
摘要:定时任务crontab静态化首页 重要提示: 对于首页的静态化,考虑到页面的数据可能由多名运营人员维护,并且经常变动,所以将其做成定时任务,即定时执行静态化。 在Django执行定时任务,可以通过django-crontab扩展来实现。 1.安装 django-crontab $ pip insta 阅读全文
posted @ 2021-06-05 21:36 foreast 阅读(864) 评论(0) 推荐(0) 编辑
摘要:使用乐观锁并发下单 重要提示: 在多个用户同时发起对同一个商品的下单请求时,先查询商品库存,再修改商品库存,会出现资源竞争问题,导致库存的最终结果出现异常。 1. 并发下单问题演示和解决方案 解决办法: 悲观锁 当查询某条记录时,即让数据库为该记录加锁,锁住记录后别人无法操作,使用类似如下语法 se 阅读全文
posted @ 2021-06-05 17:59 foreast 阅读(455) 评论(0) 推荐(0) 编辑
摘要:使用事务保存订单数据 重要提示: 在保存订单数据时,涉及到多张表(OrderInfo、OrderGoods、SKU、SPU)的数据修改,对这些数据的修改应该是一个整体事务,即要么一起成功,要么一起失败。 Django中对于数据库的事务,默认每执行一句数据库操作,便会自动提交。所以我们需要在保存订单中 阅读全文
posted @ 2021-06-05 17:35 foreast 阅读(155) 评论(0) 推荐(0) 编辑
摘要:from django.core.paginator import Paginator # 创建分页器:每页N条记录 paginator = Paginator(skus, constants.GOODS_LIST_LIMIT) # 获取每页商品数据 page_skus = paginator.pa 阅读全文
posted @ 2021-04-05 19:52 foreast 阅读(1523) 评论(0) 推荐(1) 编辑
摘要:address = Address.objects.create( user=request.user, title = receiver, receiver = receiver, province_id = province_id, city_id = city_id, district_id 阅读全文
posted @ 2021-03-29 22:18 foreast 阅读(93) 评论(0) 推荐(0) 编辑
摘要:1. 定义用户地址模型类 1.用户地址模型类 class Address(BaseModel): """用户地址""" user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='addresses', verbose 阅读全文
posted @ 2021-03-29 21:53 foreast 阅读(495) 评论(0) 推荐(1) 编辑
摘要:1.缓存工具 from django.core.cache import cache 存储缓存数据:cache.set('key', 内容, 有效期) 读取缓存数据:cache.get('key') 删除缓存数据:cache.delete('key') 注意:存储进去和读取出来的数据类型相同,所以读 阅读全文
posted @ 2021-03-29 21:37 foreast 阅读(497) 评论(0) 推荐(0) 编辑
摘要:为了给项目中模型类补充数据创建时间和更新时间两个字段,我们需要定义模型类基类。 在meiduo_mall.utils/models.py文件中创建模型类基类。 from django.db import models class BaseModel(models.Model): """为模型类补充字 阅读全文
posted @ 2021-03-27 17:06 foreast 阅读(110) 评论(0) 推荐(0) 编辑
摘要:多账号登录 Django自带的用户认证后端默认是使用用户名实现用户认证的。 用户认证后端位置:django.contrib.auth.backends.ModelBackend。 如果想实现用户名和手机号都可以认证用户,就需要自定义用户认证后端。 自定义用户认证后端步骤 在users应用中新建uti 阅读全文
posted @ 2021-03-27 15:13 foreast 阅读(396) 评论(0) 推荐(0) 编辑
摘要:class LoginView(View): """用户名登录""" def get(self, request): """ 提供登录界面 :param request: 请求对象 :return: 登录界面 """ return render(request, 'login.html') def 阅读全文
posted @ 2021-03-27 14:40 foreast 阅读(465) 评论(0) 推荐(0) 编辑
摘要:1.is_authenticate 判断用户是否登录 介绍: Django用户认证系统提供了方法request.user.is_authenticated()来判断用户是否登录。 如果通过登录验证则返回True。反之,返回False。 缺点:登录验证逻辑很多地方都需要,所以该代码需要重复编码好多次。 阅读全文
posted @ 2021-03-27 14:16 foreast 阅读(1865) 评论(0) 推荐(0) 编辑
摘要:退出登录 1. logout()方法介绍 退出登录: 回顾登录:将通过认证的用户的唯一标识信息,写入到当前session和浏览器cookie中 退出登录:正好和登录相反(清理session和cookie的信息) logout()方法: Django用户认证系统提供了logout()方法 封装了清理s 阅读全文
posted @ 2021-03-27 12:16 foreast 阅读(758) 评论(0) 推荐(0) 编辑
摘要:1. Celery介绍 Celery介绍: 一个简单、灵活且可靠、处理大量消息的分布式系统,可以在一台或者多台机器上运行。 是一个基于生产者消费者设计模式的实现异步消息处理的系统 单个 Celery 进程每分钟可处理数以百万计的任务。 通过消息进行通信,使用消息队列(broker)在客户端和消费者之 阅读全文
posted @ 2021-03-08 22:05 foreast 阅读(173) 评论(2) 推荐(0) 编辑
摘要:1.接收注册的参数 2.参数校验 3.使用Django的核心用户类(User)完成注册 包存注册数据到数据库 4.使用Django的login实现状态保持(包存session) 包存session在服务端数据库或缓存(redis) 设置session信息到cookie 5.重定向到首页 from d 阅读全文
posted @ 2021-02-27 15:14 foreast 阅读(398) 评论(0) 推荐(0) 编辑
摘要:1. Django默认用户认证系统 Django自带用户认证系统 它处理用户账号、组、权限以及基于cookie的用户会话。 Django认证系统位置 django.contrib.auth包含认证框架的核心和默认的模型。 django.contrib.contenttypes是Django内容类型系 阅读全文
posted @ 2021-01-27 20:57 foreast 阅读(359) 评论(0) 推荐(0) 编辑
摘要:1.在工程下创建包apps用于管理所有子应用 2.在apps包下创建应用users $ cd ~/projects/meiduo_project/meiduo_mall/meiduo_mall/apps $ python ../../manage.py startapp users 3. 注册use 阅读全文
posted @ 2021-01-25 23:37 foreast 阅读(387) 评论(0) 推荐(0) 编辑
摘要:1. 安装django-redis扩展包 pip install django-redis django-redis使用说明文档:django-redis文档 2. settings.py文件中配置Redis数据库 CACHES = { "default": { # 默认 "BACKEND": "d 阅读全文
posted @ 2021-01-25 21:21 foreast 阅读(438) 评论(0) 推荐(0) 编辑
摘要:1. 安装Jinja2扩展包 pip install Jinja2 2. 配置Jinja2模板引擎 1.在主工程下创建存放模板的文件夹: 标记文件夹为模板文件夹并设置模板语言为jinja2, 做了这一步后,在模板中写代码会有提示 配置jinja2引擎和模板路径 TEMPLATES = [ { 'BA 阅读全文
posted @ 2021-01-23 21:45 foreast 阅读(754) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示