在框架上搭好基本的页面
4. 购物车页面
4.3 购物车cart页面
4.3.1 cart视图函数及页面
根据css样式写一下cart.html页面
展示一下
4.3.2 实现购物车商品的增减
通过 + , - 两个按键改变一下数量
4.3.2.1 实现购物车商品的增的功能
同上篇博客类似,先写一下js样式
(顺带一提,对于一个项目来说,代码耦合性越低越好,在公司的正式开发的项目中,比如这些错误状态,可以写到一个文件里)
新建一个error_code.py文件
然后去导入
接下来去写一下视图函数
cartid在前端是可以修改的,所以在这里要再确认一下cardid是不是正常的
然后去配置一下路由
然而这个时候添加的功能并不能使用,这个是为了防止csrf攻击做的防御手段,所以这样做不被允许
在cart.html页面加一段代码,这个是每次Ajax方式提交请求,比如get和post请求的时候,都向服务器提交了 csrfmiddlewaretoken,服务器就不会禁止了
然后可以去浏览器查看一下,点击按键 + 时,购物车页面所对应商品num数量加一
修改js样式,让页面上显示相应的数字
依旧可以去数据库查看一下数据对不对,方法一样,可以查看上一篇博客
使用装饰器功能
鉴于每一次实现功能,都要判断用户是否登陆的状态,请求的方式时get请求还是post请求,这样代码量多,且代码耦合性大
这里可以用一下装饰器,实现 判断用户是否登陆的状态,请求的方式时get请求还是post请求 ,这些功能
(为什么早不用?白写这么多代码…)
新建一个utils.py文件,写一下装饰器,
先写一个判断用户是否登陆的状态的装饰器
在views.py文件下导入这个装饰器
然后会出现取不到userid的情况
修改一下装饰器,把用户动态的加到request上面
再修改一下
看一下功能是否一致,可以看到添加商品时数量可以改变
在其他用到登陆状态的地方也改一改,删掉内容,加上装饰器
改为
其余的修改不一一列出了
再写一个判断用户是否登陆的状态的装饰器
进入utils.py文件,
在views.py文件下导入这个模块
其他模块能用到的也依次修改
4.3.2.2 实现购物车商品的减的功能
先写一下js样式,与 + 类似,可以直接复制过来修改一些参数
根据 /axf/cart_num_reduce/ 去写一下视图函数
也可以把添加的视图函数复制一下,修改一些参数
在urls.py文件下添加一条path
可以去浏览器操作一下,当点击 + - 按键时,页面上的数字会发生实时变化
然后查看一下数据库,确认数据是否无误