Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.59 KB | None | 0 0
  1. модель
  2. class Like(models.Model):
  3.     like = models.BooleanField()
  4.     user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
  5.     product = models.ForeignKey(Product, on_delete=models.CASCADE)
  6.  
  7.  вюха
  8.  
  9. class LikeView(View):
  10.     model = Product
  11.  
  12.     def post(self, request, pk):
  13.         obj = self.model.objects.get(pk=pk)
  14.         likes = Like.objects.get(product_id=obj.id)
  15.         try:
  16.             if request.user.is_authenticated():
  17.                 like = Like.objects.get(user=request.user)
  18.             elif not request.user.is_authenticated():
  19.                 like = Like.objects.get(user_ip=get_ip(request))
  20.                 if like.like:
  21.                     like.like = False
  22.                     like.save()
  23.                     okay = 'False'
  24.                 elif not like.like:
  25.                     like.like = True
  26.                     like.save()
  27.                     okay = 'True'
  28.         except like.DoesNotExist:
  29.             if not request.user.is_authenticated():
  30.                 like = Like.objects.create(user_ip=get_ip(request), liked=True)
  31.             else:
  32.                 like = Like.objects.create(user=request.user, liked=True)
  33.             like.save()
  34.             okay = 'new'
  35.         return HttpResponse(
  36.             json.dump({
  37.                 'result': okay,
  38.                 'like': likes.count(like=True),
  39.                 })
  40.         )
  41. скрипт
  42.  
  43. {% extends 'base.html' %}
  44. {% block content %}
  45.     <div class="product_details">
  46.         <img src="{{product.image.url}}"/>
  47.         <button class="like" onclick="make_like()">Like</button>
  48.         <h3>{{product.name}}</h3>
  49.         <p class="desc">Description: <span>{{product.description}}</span></p>
  50.         <p class="price">Price: <span>{{product.price}}</span></p>
  51.     </div>
  52. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">
  53. </script>
  54. <script>
  55.     function make_like(){
  56.         var like = $(this)
  57.         var pk = {{product.id}}
  58.         var
  59.  
  60.         $.ajax({
  61.             url : window.location.href + "/like/",
  62.             type : 'POST',
  63.             data : {obj: pk},
  64.  
  65.             success:function(json){
  66.                 if(json.result == 'new'){
  67.                     $('.like').css('background','#FF0000');
  68.                 }else if(json.result == 'False'){
  69.                     $('.like').css('background','');
  70.                 }else if(json.result == 'True'){
  71.                     $('.like').css('background','#FF0000');
  72.                     }
  73.                 }
  74.             })
  75.  
  76.         }
  77. </script>
  78.  
  79. {%endblock%}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement