DJANGO-天天生鲜项目从0到1-004-用户模块-个人中心页
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习
https://www.bilibili.com/video/BV1vt41147K8?p=1
自定义模型管理器类(models.Manager)
一般我们会使用预定义的模型的管理器类的方法去进行一些操作,比如查询地址模型类的所有数据:Address.objects.all(),其中Address.objects返回的就是models.Manager的对象
当我们需要重写一些预定义的方式时,如重写.all(),让其默认添加一些筛选条件;或者想让新增自定义的方法时,就需要重新定义models.Manager类
这里我们让地址类返回用户默认的收货地址:
在models.py中的原模型类上添加objects属性:objects = Address.Manager()
class Address(BaseModel):
'''地址模型类'''
user = models.ForeignKey('User', on_delete=models.CASCADE)
receiver = models.CharField(verbose_name='收货人', max_length=)
address = models.CharField(verbose_name='收货地址', max_length=)
zip_code = models.CharField(verbose_name='邮编', max_length=, null=True)
phone = models.CharField(verbose_name='电话号码', max_length=)
is_default = models.BooleanField(verbose_name='是否默认', default=False) objects = AddressManager()
在models.py中新增Address.Manager()类
class AddressManager(models.Manager):
'''用户地址模型管理器类''' # 自定义模型管理器类,用来修改原有方法或者新增方法
def get_default_address(self, user):
'''获取用户默认收货地址'''
try:
address = self.get(user=user, is_default=True)
except Address.DoesNotExist:
address = None
return address
在视图中直接调用Address.objects.get_default_address(request.user)
def get(self, request):
'''显示用户收货地址'''
self.context['type'] = 'address'
# 获取默认收货地址
address = Address.objects.get_default_address(request.user)
self.context['address'] = address
return render(request, self.template_name, self.context)
使用django-redis实现django与redis交互
django-redis 基于 BSD 许可, 是一个使 Django 支持 Redis cache/session 后端的全功能组件.
安装django-redis
pip install django-redis
修改caches缓存设置
# django 缓存设置cache: 使用redis数据库当做缓存的存储位置
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
连接redis数据库
原始连接写法:StrictRedis
这种写法只需要pip install redis即可,没有用到上面的djang-redis
from redis import StrictRedis
#创建连接对象
connect = StrictRedis(host='localhost', port=6379, db=0)
#简写
#connect=StrictRedis()
#操作数据库
result = connect.set('name', 'gong')
使用djang-redis:get_redis_connection
这种写法使用到了上面配置的连接‘default’
from django_redis import get_redis_connection # 获取历史浏览记录
# 连接redis数据库
connect = get_redis_connection('default')
# 获取当前用户key值,格式为history_userid
history_key = 'history_%d'%(user.id)
# 获取最新的五条历史记录
history_list = connect.lrange(history_key, 0, 4)
# 获取商品对象
goods_list = [Goods.objects.get(id=i) for i in history_list]
DJANGO-天天生鲜项目从0到1-004-用户模块-个人中心页的更多相关文章
- django天天生鲜项目
.后台admin管理天天生鲜商品信息 models里 from django.db import modelsfrom tinymce.models import HTMLField #需要pip安装 ...
- DJANGO-天天生鲜项目从0到1-012-订单-用户订单页面
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- DJANGO-天天生鲜项目从0到1-007-首页静态化与缓存
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- python 天天生鲜项目
python 天天生鲜项目 django版:https://github.com/Ivy-1996/fresh flask版:https://github.com/Ivy-1996/flask-fre ...
- Django之天天生鲜项目
准备工作 1.配置settings.py内置文件 注意: AUTH_USER_MODEL配置参数要在第一次迁移数据库之前配置,否则可能django的认证系统工作不正常 2.创建应用 3.配置主路由 一 ...
- DJANGO-天天生鲜项目从0到1-011-订单-订单提交和创建
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- DJANGO-天天生鲜项目从0到1-010-购物车-购物车操作页面(勾选+删改)
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- DJANGO-天天生鲜项目从0到1-009-购物车-Ajax实现添加至购物车功能
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- DJANGO-天天生鲜项目从0到1-009-搜索功能实现(django-haystack+whoosh+jieba)
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
- DJANGO-天天生鲜项目从0到1-006-首页-内容展示
本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...
随机推荐
- 上位机面试必备——TCP通信灵魂二十问【下】
上篇文章跟大家介绍了TCP通信常见的前10个面试题,没看过的小伙伴可以点击下方链接进行查看: 上位机面试必备——TCP通信灵魂二十问[上] 今天就后面的10个面试题接着做下说明:欢迎关注[dotNet ...
- SSTI-服务端模板注入漏洞
原理: 服务端模板注入是由于服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中,执行了用户插入的恶意内容,因而导致了敏感信息泄露.代码执行.GetShell ...
- 主机Redis服务迁移到现有Docker Overlay环境
记录最后一次对中型2C企业级项目的容器化改造 hello, 好久不见,之前文章记录了一个实战的2C分布式项目的改造过程,结果如下: 其中Redis并未完成容器化改造(目前是主机单点),本文记录将Red ...
- 入门大数据---Hbase协处理器详解
一.简述 Hbase 作为列族数据库最经常被人诟病的特性包括:无法轻易建立"二级索引",难以执 行求和.计数.排序等操作.比如,在旧版本的(<0.92)Hbase 中,统计数 ...
- 读取和写入blob类型数据
读写oracle blob类型 http://zyw090111.iteye.com/blog/607869 http://blog.csdn.net/jeryjeryjery/article/de ...
- Yarn的安装和全局配置(源/缓存位置/全局安装位置)
本文安装环境: Win10 64位 前置条件: 已安装好Node环境(参考Node安装与环境配置) 下载和安装 Yarn安装包下载地址 全局配置 控制台输入命令, 正常显示版本表示安装成功 $ yar ...
- 数据库基础01-SQL基础语法
数据库查询语言(Structured Query Language) 数据库查询语言: DDL(data definition language) -数据定义语言,建库建表 DML (data man ...
- CF3D Least Cost Bracket Sequence 题解
题目 This is yet another problem on regular bracket sequences. A bracket sequence is called regular, i ...
- HTTP响应头拆分/CRLF注入详解
转自:https://blog.csdn.net/gstormspire/article/details/8183598 https://blog.csdn.net/cqf539/article/de ...
- [JAVA]解决不同浏览器下载附件的中文名乱码问题
附件下载时,遇到中文附件名的兼容性问题,firefox.chrome.ie三个派系不兼容,通过分析整理,总结出处理该问题的办法,记录如下: 1.文件名编码 服务器默认使用的是ISO8859-1,而我们 ...