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)    收藏  举报

导航