前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django 实现购物车功能

Django 实现购物车功能

作者头像
希希里之海
发布于 2018-08-02 07:14:12
发布于 2018-08-02 07:14:12
2.7K00
代码可运行
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏
运行总次数:0
代码可运行

  购物车思路:使用 session 功能识别不同浏览器用户,使得用户不管是否登录了网站,均能够把想要购买的产品放在某个地方,之后随时可以显示或修改要购买的产品,等确定了之后再下订单,购物车可以用来暂存商品。

  我们可以使用 session 为每一个用户创建一个 ID,然后以这个 ID 作为创建每一个购物车的依据。这个购物车在用户浏览过程中会保留数据,一直到实际完成下单,用户执行清除,或者关闭浏览器为止,当然,退出登录的话购物车内容也会消失不见。

在 settings.py 文件中加入下列语句,表示要求在浏览器一关闭的时候 session 就会失效。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SESSION_EXPIRE_AT_BROWSER_CLOSE = True

购物车的具体实现已经有现成的模块 django-cart 可以使用,详细用法可以参考 GitHubhttps://github.com/bmentges/django-cart 。执行安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip install django-cart

安装完成后我们在 settings.py 文件中 INSTALL_APPS 中加入 'cart' 模块。并执行 ./manage.py migrate 更新数据库

在 urls.py 中增加3个网站样式,分别用来执行购物车的增加产品,删除产品以及查看购物车。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
url(r'^cart/$', views.cart),
url(r'^additem/(\d+)/(\d+)/$', views.add_to_cart, name='additem-url'),
url(r'^removeitem/(\d+)/$', views.remove_from_cart, name='removeitem-url'),

我们编写 add_to_cart 函数,调用 django-cart 模块的 Cart 类,实现增加产品功能。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from cart.cart import Cart
def add_to_cart(request, product_id, quantity):
    product = models.Product.objects.get(id=product_id)
    cart = Cart(request)
    cart.add(product, product.price, quantity)
    return redirect('/')

这里记得将 cart.py 中的 import models 改为 from . import models ,否则 Python 会找不到这个模块,报错。

删除产品。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def remove_from_cart(request, product_id):
    product = models.Product.objects.get(id=product_id)
    cart = Cart(request)
    cart.remove(product)
    return redirect('/cart/')

显示购物车内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@login_required
def cart(request):
    all_categories = models.Category.objects.all()
    cart = Cart(request)
    template = get_template('cart.html')
    html = template.render(context=locals(), request=request)
    return HttpResponse(html)

购物车的 html 文件 cart.html 。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- cart.html (mshop project) -->
{% extends "base.html" %}
{% block title %}查看购物车{% endblock %}
{% block content %}
<div class='container'>
{% for message in messages %}
    <div class='alert alert-{{message.tags}}'>{{ message }}</div>
{% endfor %}
    <div class='row'>
        <div class='col-md-12'>
            <div class='panel panel-default'>
                <div class='panel-heading' align=center>
                    <h3>欢迎光临迷你小电商</h3>
                        {% if user.socialaccount_set.all.0.extra_data.name %}
                            {{user.socialaccount_set.all.0.extra_data.name}}<br/>
                            <img src='{{user.socialaccount_set.all.0.get_avatar_url}}' width='100'>
                        {% else %}
                            Welcome: {{ user.username }}
                        {% endif %}
                </div>
            </div>
        </div>
    </div>
    <div class='row'>
        <div class='col-sm-12'>
            <div class='panel panel-info'>
                <div class='panel panel-heading'>
                    <h4>我的购物车</h4>
                </div>
                <div class='panel panel-body'>
                    {% for item in cart %}
                    {% if forloop.first %}
                    <table border=1>
                        <tr>
                            <td width=300 align=center>产品名称</td>
                            <td width=100 align=center>单价</td>
                            <td width=100 align=center>数量</td>
                            <td width=100 align=center>小计</td>
                            <td width=100 align=center>删除</td>
                        </tr>
                    {% endif %}
                        <div class='listgroup'>
                            <div class='listgroup-item'>
                                <tr>
                                    <td>{{ item.product.name }}</td>
                                    <td align=right>{{ item.product.price }}</td>
                                    <td align=center>{{ item.quantity }}</td>
                                    <td align=right>{{ item.total_price }}</td>
                                    <td align=center>
                                        <a href='{% url "removeitem-url" item.product.id %}'><span class='glyphicon glyphicon-trash'></span></a>
                                    </td>
                                </tr>
                            </div>
                        </div>
                    {% if forloop.last %}
                    </table>
                    <button class='btn btn-warning'><a href='/order'>我要订购</a></button>
                    {% endif %}
                    {% empty %}
                        <em>购物车是空的</em>
                    {% endfor %}
                </div>
                <div class='panel panel-footer'>
                    总计:{{ cart.summary }}</div>
            </div>
        </div>
    </div>
</div>
{% endblock %}

显示如下:

至此,我们便完成了购物车功能,接下来可以实现订单功能,付款功能等等。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
小程序+新零售,行业新玩法!
随着消费升级和商业模式的不断革新,线上线下融合的新零售概念被企业和互联网广泛提及。从大润发的飞牛网,到京东3C产品实体店,再到阿里巴巴的无人超市,中国零售业正发生着重大的变革。而连接线上场景与线下服务的微信小程序,能否成为线下门店撬动新零售的杠杆?下面跟随小编一起进入探索吧!
中微信通
2018/09/20
2K0
小程序+新零售,行业新玩法!
从消费到产业,京东在618重新定义“全渠道”
第19年,618已从京东初创时的那个“年中总结表彰大会的好日子”,一步步发展成为零售行业共同参与的全民购物节,甚至成为中国上半年消费的晴雨表。
庄帅
2022/06/14
3300
从消费到产业,京东在618重新定义“全渠道”
实体店生意不好做,小程序为线下门店经营解决哪些痛点?
如今实体店的运营成本越来越高,店面租金、人工成本、营销广告等成本逐年攀升,再加上互联网电商的冲击,门店客流少之又少,这给商家带来不小的压力,商家要做的就是想尽办法拓宽客流来源渠道,这样才有可能赚到钱。
得有店小程序
2020/04/17
1.4K0
全域经营如何成就零售新赛道?
近日,中国连锁经营协会(CCFA)与腾讯共同推出《中国零售业公私域运营手册暨实施指引》,帮助零售企业更好地理解公私域及联动的经营方式,同时也为实体零售企业搭建全域运营框架和体系,构建公私域联动的全域生意增长,提供切实有效的指导。
庄帅
2021/11/30
8080
全域经营如何成就零售新赛道?
“新零售”的另一种玩法?从“时尚之王”蘑菇街说起
双11结束后,各家电商平台都已交出成绩单。其中天猫和京东均创下新高,天猫双11单日成交额达到了2135亿,同比增长26.93%;京东11月1日到11日累计下单金额超1598亿,同比增长25.7%。从天猫和京东的成绩单来看,中国消费市场并未受到宏观经济环境的显著影响,呈现出强劲的活力。
罗超频道
2018/12/13
2.1K0
小程序,就是新零售的未来……
场景驱动化、业态多样化、体验极致化,对产品和技术平台提出了新的要求,而“微信社会”中的小程序,凭借着离消费者一指之遥的距离,开放的解决方案能力,原生级的体验,是最适宜的新零售创新孵化平台。
深圳秀思科技有限公司
2018/07/27
7820
小程序,就是新零售的未来……
微盟要做智慧零售送水人,如何翻过阿里京东腾讯的大山?
9月6日,智能商业服务商微盟在“商都”广州发布智慧零售解决方案,旨在帮助商家将传统零售门店智能化。这也是微盟继今年8月在香港启动IPO来的最大业务动向,从中我们可以看到零售业将是微盟最重视的商业场景,微盟做智慧零售送水人的野心浮出水面。
罗超频道
2018/09/28
6380
疫情下商贸零售行业市场表现回顾及行业数据分析
受疫情影响,包括零售、餐饮、旅游、娱乐在内的很多产业生态都受到了大范围的冲击,2020年第一季度,都起码有至少5000亿元人民币的经济损失,但疫情下的真实消费需求并非消失,而是换了一种方式被满足……
庄帅
2020/03/26
9470
疫情下商贸零售行业市场表现回顾及行业数据分析
行业 | 服装行业+小程序的秘密只有少数人知道
近年来,国内服装行业销售的持续下滑已成为既定事实。据不完全统计,美特斯邦威在三年内关闭了1600家门店;李宁在三年内关闭了近1800家店铺;过去几年,波司登已将店铺数量减少了8000多家......
极客小程序分享
2018/12/06
1.7K0
行业 | 服装行业+小程序的秘密只有少数人知道
齿轮易创COO刘雨晴在线分享课程,探讨“新零售行业如何收割小程序红利”(二)
其实小程序,在整个零售过程里,将场景不断蔓延,给智慧零售带来了不可估量的价值。我们把这个场景当成一个完整的生态链,那么这个场必须要去实现四个打通:
齿轮易创说互联网
2018/12/21
1.7K0
即时零售有哪些模式,还有机会吗
即时零售一般根据是否直接拥有商品分为自营和平台。平台模式通过线上互联网平台连接消费者和商家,平台提供浏览、加购、下单、履约配送等能力。自营模式直接拥有商品、门店、线上平台等。多用于垂直化零售,这点像早期京东自营3C品类,为扩展规模,向POP平台延伸。
用户6763920
2023/10/07
5980
即时零售有哪些模式,还有机会吗
微盛见实联合发布:私域流量白皮书
疫情对各行各业造成了深度影响,尤其是和线下相关。与此同时,也有许多企业通过迅速调整,转换打法,获得了快速增长。来自微信小程序的数据显示,2020年除夕到初七,小程序生鲜果蔬业态交易笔数增长149% ,社区电商业态交易笔数增长322%。
微盛企微管家
2020/07/23
1.2K0
微盛见实联合发布:私域流量白皮书
小程序成微信社交打造智慧零售生态圈的关键环节
随着零售业运营成本不断攀升,门店引流能力有限,零售商对于精准获客以及顾客有效留存和转化的需求极为强烈,线上线下的一体化融合已是大势所趋。
场景录小程序
2018/07/04
1.2K0
小程序成微信社交打造智慧零售生态圈的关键环节
小程序爆发正当时,零售实体店如何借其翻盘?
企鹅号小编
2018/01/02
7960
舞象云浦健东:没有撞大运的事,一天真能实现线上销售代替门店业务吗?|腾讯SaaS加速器·CEO说
‍ 来源 | 腾讯SaaS加速器首期项目-舞象云 ---- 鼠年新春伊始,一场突如其来的疫情席卷中国。一向被视为零售行业黄金周的春节,在今年显得十分冷清。紧接着,春节假期结束,各地遵循国家安排,或延迟复工,或在家办公。对于中国经济重要组成部分的零售行业来讲,这是特别艰难的时刻,该如何应对 面对疫情迅速行动建立线上营销能力,这是无比正确的。但是,最近也有很多一天就能帮助零售企业恢复销售的所谓线上销售解决方案出现,我们不禁要想,临时抱佛的行为真的能解决长期以来数字化能力的缺失吗? 舞象云作为深耕零售数字
腾讯SaaS加速器
2020/06/09
8290
小程序才是实体店的出路?是的!
“那些历史的尖峰时刻都需要太长的酝酿时间,每一桩影响深远的事件都需要一个发展的过程。就像避雷针的尖端汇聚了整个大气层的电流一样,那些不可胜数的事件也会挤在这最短的时间内发作,但它们的决定性影响却超越时间之上。”
用户1745481
2019/04/19
6340
小程序才是实体店的出路?是的!
全国首家人脸智慧时尚店亮相深圳 “刷脸”就可购物
微信支付全国首家人脸智慧时尚店亮相深圳。图为顾客体验刷脸支付。南方日报记者 鲁力 摄 南方日报讯(记者/苏梓威)“这是智慧试衣间,请您‘刷脸’,我们将为您推荐服饰搭配”“您好,买单一共200元,请‘刷脸’”……这是在12月25日亮相深圳的微信支付全国首家人脸智慧时尚店中,记者所见情景。在这里,市民“买买买”连手机都不用带,只需“刷脸”,便能享受快速便捷的“无感”购物体验。 智慧零售能力升级 全国首家人脸智慧时尚店由微信支付、腾讯社交广告与绫致时装集团合作推出。不同于传统商店“海报—人工导购—购买”流程,
企鹅号小编
2018/01/26
1.1K0
小程序直播:商家的带货新战场,将是私域流量的发力点
2020年初,一场疫情让电商使出浑身解数在互联网主战场开辟直播新阵地。面对传统零售在实体经济中的这支地面部队,部分企业开始分化出精英小分队探索私域直播,直播不仅让零售企业打出了一个漂亮的翻身仗,更让被疫情逼到悬崖的线下零售出现转机。面对薇娅、李佳琪这样的直播网红“辣子鸡”,以及罗永浩这样的KOL加入直播,大部分只看到人前风光的GMV,却忽视了直播背后底层技术架构的搭建。
云店加小程序分享
2020/04/15
1.2K0
“刷脸”购物来了
微信支付全国首家人脸智慧时尚店亮相深圳。在这里,市民“买买买”连手机都不用带,只需“刷脸”,便能享受快速便捷的“无感”购物体验。 智慧零售能力升级 全国首家人脸智慧时尚店由微信支付、腾讯社交广告与绫致时装集团合作推出。不同于传统商店“海报—人工导购—购买”流程,这家“聪明”的人脸智慧时尚店利用微信支付智慧零售行业解决方案,通过人脸识别AI技术及精准推荐算法,将智慧零售概念再次进行能力升级。商家可以更好地了解用户需求,从而给用户提供个性化空间和私人定制化服务。 微信商业新模式 微信面向未来的商业模式将会是
企鹅号小编
2018/01/25
9520
小程序成微信社交打造智慧零售生态圈的关键环节
随着零售业运营成本不断攀升,门店引流能力有限,零售商对于精准获客以及顾客有效留存和转化的需求极为强烈,线上线下的一体化融合已是大势所趋。
场景录小程序
2018/06/27
5460
小程序成微信社交打造智慧零售生态圈的关键环节
推荐阅读
相关推荐
小程序+新零售,行业新玩法!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档