(1) 添加到购物车
前端:
html
<a @click="add_carts" class="add_cart" id="add_cart">加入购物车</a>
js
// 加入购物车
add_carts(){
let url = '/carts/';
axios.post(url, {
sku_id: parseInt(this.sku_id),
count: this.sku_count
}, {
headers: {
'X-CSRFToken':getCookie('csrftoken')
},
responseType: 'json',
withCredentials: true
})
.then(response => {
if (response.data.code == '0') {
alert('添加购物车成功');
this.cart_total_count += this.sku_count;
} else { // 参数错误
alert(response.data.errmsg);
}
})
.catch(error => {
console.log(error.response);
})
},
后端
views.py
class CartsView(View):
"""购物车管理"""
def post(self, request):
"""保存购物车"""
# 接收参数
json_dict = json.loads(request.body.decode())
sku_id = json_dict.get('sku_id')
count = json_dict.get('count')
selected = json_dict.get('selected', True) # 可选
# 校验参数
# 判断参数是否齐全
if not all([sku_id, count]):
return http.HttpResponseForbidden('缺少必传参数')
# 校验sku_id是否合法
try:
SKU.objects.get(id=sku_id)
except SKU.DoesNotExist:
return http.HttpResponseForbidden('参数sku_id错误')
# 校验count是否是数字
try:
count = int(count)
except Exception as e:
return http.HttpResponseForbidden('参数count错误')
# 校验勾选是否是bool
if selected: