【愚公系列】2022年01月 Django商城项目 25-热销数据功能实现

举报
愚公搬代码 发表于 2022/01/31 22:31:19 2022/01/31
【摘要】 一、热销数据功能实现 1.后台查询代码class HotView(View): def get(self,request,category_id): # 1.获取分类id # 2.查询是否有当前分类 try: category=GoodsCategory.objects.get(id=category_id) ...

一、热销数据功能实现

1.后台查询代码

class HotView(View):

    def get(self,request,category_id):
        #  1.获取分类id
        # 2.查询是否有当前分类
        try:
            category=GoodsCategory.objects.get(id=category_id)
        except Exception as e:
            return http.JsonResponse({'code':RETCODE.NODATAERR,'errmsg':'暂无此分类'})
        # 3.根据分类去查询指定的数据,并进行排序,排序之后获取n条
        skus = SKU.objects.filter(category=category,is_launched=True).order_by('-sales')[:2]
        # 4.ajax 把对象列表转换为字典列表
        skus_list = []
        for sku in skus:
            skus_list.append({
                   'id':sku.id,
                'default_image_url':sku.default_image.url,
                'name':sku.name,
                'price':sku.price
            })

        return http.JsonResponse({'code':RETCODE.OK,'errmsg':'ok','hot_skus':skus_list})

二、热销数据信息展示

1.前台html代码

<script type="text/javascript">
    let category_id="{{ category.id }}"
</script>
<ul>
    <li v-for="sku in hots">
        <a :href="sku.url"><img :src="sku.default_image_url"></a>
        <h4><a :href="sku.url">[[ sku.name ]]</a></h4>
        <div class="price">[[ sku.price ]]</div>
    </li>
</ul>

vue相关接口请求代码

var vm = new Vue({
    el: '#app',
    // 修改Vue变量的读取语法,避免和django模板语法冲突
    delimiters: ['[[', ']]'],
    data: {
        host,
        cart_total_count: 0, // 购物车总数量
        carts: [], // 购物车数据,
        hots: [],
        category_id: category_id,
        username: '',
    },
    mounted(){
        // 获取热销商品数据
        this.get_hot_goods();
        this.username = getCookie('username');
    },
    methods: {
        // 获取热销商品数据
        get_hot_goods(){
            var url = this.host + '/hot/' + this.category_id + '/';
            axios.get(url, {
                responseType: 'json'
            })
                .then(response => {
                    this.hots = response.data.hot_skus;
                    for (var i = 0; i < this.hots.length; i++) {
                        this.hots[i].url = '/goods/' + this.hots[i].id + '.html';
                    }
                })
                .catch(error => {
                    console.log(error.response);
                })
        }
    }
});

2.实际效果

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。