django-$.get()和$.post()用法示例
$.get()
1、见:django-使用jquery完成ajax,实例-选择省市区
2、
.html
1 <script type="text/javascript"> 2 $(function(){ 3 $('.num_show').blur(function(){ 4 count=parseInt($(this).val()); 5 cart_id=$(this).parents('.cart_list_td').attr('id'); //获取当前商品的id 6 $.get('/cart/edit'+cart_id+'_'+count+'/',function(data){ 7 if(data.count==0){ //修改成功,计算总价 8 total() 9 } 10 else{ //修改失败,改为原来的值 11 $(this).val(data.count) 12 } 13 }); 14 }); 15 }) 16 </script>
urls.py
1 from django.conf.urls import url 2 from . import views 3 4 urlpatterns = [ 5 url(r'^$',views.user_cart), 6 url(r'^edit(\d+)_(\d+)/$',views.edit), 7 ]
views.py
1 def edit(request,cart_id,count): 2 try: 3 cart=CartInfo.objects.get(pk=int(cart_id)) 4 cart.count=int(count) 5 cart.save() 6 count=0 7 except Exception: 8 count=count 9 return JsonResponse({'count':count})
$.post()
.html
1 <script type="text/javascript"> 2 $('#order_btn').click(function() { 3 //获取所有id,拼接成字符串 4 cartids='' 5 $('.goods_list_td').each(function(){ 6 cartids+=$(this).attr('id')+',' 7 }); 8 cartids=cartids.substring(0,cartids.length-1); //去掉最后一个逗号 9 total={{ total_trans_price }}; 10 data={ 11 'cart_ids':cartids, 12 'total':total, 13 'csrfmiddlewaretoken':'{{ csrf_token }}' //对于ajax提交数据,把下面的代码加入到js的头部,可以保证ajax执行时自动提交参数csrfmiddlewaretoken 14 }; 15 //alert(data.csrfmiddlewaretoken) 16 17 //先发请求 18 $.post('/order/push/',data,function(data1){ 19 if(data1.ok==1){ 20 localStorage.setItem('order_finish',2); 21 22 $('.popup_con').fadeIn('fast', function(){ 23 setTimeout(function(){ 24 $('.popup_con').fadeOut('fast',function(){ 25 location.href = "{% url 'user:order' 1 %}"; 26 //alert('订单提交成功') 27 }); 28 },1000) 29 }); 30 } 31 else { 32 alert('订单提交失败') 33 } 34 }) 35 }); 36 </script>
urls.py
1 from django.conf.urls import url 2 from . import views 3 4 urlpatterns = [ 5 url(r'^$',views.order), 6 url(r'^push/$',views.order_handle), 7 ]
views.py
1 def order_handle(requset): 2 tran_id=transaction.savepoint() # 创建保存点/保存事务发生点 3 cart_ids=requset.POST.get('cart_ids') # 用户提交的订单购物车,此时cart_ids为字符串,例如'1,2,3,' 4 user_id=requset.session['user_id'] # 获取当前用户的id 5 data1={} 6 try: 7 order_info=OrderInfo() # 创建一个订单对象 8 now=datetime.now() 9 order_info.oid='%s%d'%(now.strftime('%Y%m%d%H%M%S'),user_id) # 订单号为订单提交时间和用户id的拼接 10 order_info.odate=now # 订单时间 11 order_info.user_id=int(user_id) # 订单的用户id 12 order_info.ototal=Decimal(requset.POST.get('total')) # 从前端获取的订单总价 13 order_info.save() # 保存订单 14 15 for cart_id in cart_ids.split(','): # 逐个对用户提交订单中的每类商品即每一个小购物车 16 cart=CartInfo.objects.get(pk=cart_id) # 从CartInfo表中获取小购物车对象 17 order_detail=OrderDetailInfo() # 大订单中的每一个小商品订单 18 order_detail.order=order_info # 外键关联,小订单与大订单绑定 19 goods=cart.goods # 具体商品 20 if cart.count<goods.gkucun: # 判断库存是否满足订单,如果满足,修改数据库 21 goods.gkucun-=cart.count 22 goods.save() 23 order_detail.goods=goods 24 order_detail.price=goods.gprice 25 order_detail.count=cart.count 26 order_detail.save() 27 cart.delete() # 并删除当前购物车 28 else: # 否则,则事务回滚,订单取消 29 transaction.savepoint_rollback(tran_id) #回滚到保存点 30 return HttpResponse('库存不足') 31 data1['ok']=1 32 transaction.savepoint_commit(tran_id) #提交从保存点到当前状态的所有数据库事务操作 33 except Exception as e: 34 print(e) 35 print('未完成订单提交') 36 transaction.savepoint_rollback(tran_id) # 事务任何一个环节出错,则事务全部取消 37 return JsonResponse(data1)
posted on 2020-02-16 13:21 cherry_ning 阅读(561) 评论(0) 收藏 举报
浙公网安备 33010602011771号