python3 之 天天生鲜 浏览记录

#判断用户是否登录

当点击商品(详情),浏览记录商品id --- 存入redis库  以list的形式 user的id作为    key

from django_redis import get_redis_connection

if request.user.is_authenticated():
            # 创建客户端
            redis_conn = get_redis_connection('default')  # connection:连接
            # 获取用户🆔
            user_id = request.user.id

            # 从redis中获取购物车数据,返回字典
            cart_dict = redis_conn.hgetall('cart_%s' % user_id)
            for num in cart_dict.values():
                # 获取数量 为字节 转换为 整数
                cart_num += int(num)

            # 设置浏览记录:登陆之后的 user_id:[sku_id1,sku_id2,sku_id3,sku_id4,sku_id5]
            redis_conn.lpush("history_%s" % user_id, sku_id)  #向左侧插入
            redis_conn.ltrim("history_%s" % user_id, 0, 4)  # 只保存几条数据 
获取浏览记录 对象

#用户中心
class UserInfo(LoginRequired):

  def get(self,request):
    #获得用户
    user = request.user
    #获取最后的地址信息
    try:
      addr = Address.objects.filter(user=user).last()
    except Address.DoesNotExist:
      addr = None


#
从 redis 获取浏览记录 # 创建redis客户端 链接默认库 redis_conn = get_redis_connection('default') #获取商品列表 范围下标0-4 5个 id_list = redis_conn.lrange("history_%s" % user.id,0,4) #定义列表 sku_list = [] for id in id_list: sku = GoodsSKU.objects.get(id=id) sku_list.append(sku) context = { 'addr': addr, 'sku_list':sku_list, }

html

{% for sku in sku_list %}
                        <li>
                            <a href="{% url 'goods:detail' sku.id %}"><img src="{{sku.default_image.url}}"></a>
                            <h4><a href="detail.html">{{sku.name}}</a></h4>
                            <div class="operate">
                                <span class="prize">¥{{sku.price}}</span>
                                <span class="unit">{{sku.price}}/{{sku.unit}}</span>
                                <a href="{% url 'goods:detail' sku.id %}" class="add_goods" title="加入购物车"></a>
                            </div>
                        </li>
                    {% endfor %}

 

posted @ 2020-10-28 14:37  Py_beginner  阅读(132)  评论(0编辑  收藏  举报