2017-12-23 4 views
0

비슷한 버튼에 대한 다음 아키텍처를 구축했지만 작동하지 않습니다. 여기 내 파일은 다음과 같습니다Ajax는 Django의 버튼처럼 동작합니다.

models.py

class Comentario (models.Model): 
    titulo = models.CharField(max_length=50) 
    autor = models.ForeignKey (Perfil, null=True, blank=True, on_delete=models.CASCADE) 
    archivo = models.FileField(upload_to='media/%Y/%m/%d', null=True, blank=True) 
    slug= models.SlugField(default=0) 
    likes = models.ManyToManyField(Perfil, related_name="likes") 

    def __str__(self): 
     return (self.titulo) 

    @property 

    def total_likes(self): 
     return self.likes.count() 

    def save(self, *args, **kwargs): 
     self.slug=slugify(self.titulo) 
     super(Comentario, self).save(*args, **kwargs) 

views.py

try: 
    from django.utils import simplejson as json 
except ImportError: 
    import json 

def like (request): 
    if request.method=='POST': 
    perfil=request.user 
    slug=request.POST.get('slug', None) 
    comentario=get_object_or_404(Comentario, slug=slug) 

     if comentario.objects.filter(perfil__id=perfil.id).exists(): 
      comentario.likes.remove(perfil_id) 
     else: 

      comentario.likes.add(perfil_id) 

    context={'likes_count':comentario.total_likes} 
    return HttpResponse(json.dumps(context), content_type='home/json') 

urls.py

url(r'^like/$', login_required(views.like), name='like') 

<input type="button" id="like" name='{{ comentario_slug }}' value="Like" /> 

       <script> 
       $('#like').click(function(){ 
        $.ajax("/home/like/",{ 
          type: "POST", 
          url: "{% url 'home:like' %}", 
          data: {'slug': $(this).attr('titulo'), 'csrfmiddlewaretoken': '{{ csrf_token }}'}, 
          dataType: "json", 
          success: function(response) { 

          alert(' likes count is now ' + response.likes_count); 
         }, 
          error: function(rs, e) { 
          alert(rs.responseText); 
          } 
         }); 
        }) 
       </script> 
.html 중에서

버튼을 누르면 아무 것도하지 않습니다. 을 어느 http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js

:

POST의 HTT의 jquery.min.js : 4 페이지 : /127.0.0.1.8000/home/like/404 (찾을 수 없음)

및 콘솔은 나에게 말한다 문제?

이 문제는보기가 슬러그 필드에 의해 Comentario을 발견하지 않는 것이 거기에 당신의 도움

답변

0

주셔서 감사합니다. 아약스 { 'slug' : $(this).attr('titulo') ...이 맞습니까? 'titulo'이 슬러그에 대한 올바른 필드이거나 $(this).attr('slug')이어야합니다. 이것을 시도해보십시오 :

$.ajax("/home/like/",{ 
         type: "POST", 
         url: "{% url 'home:like' %}", 
         data: {'slug': $(this).attr('name'), 'csrfmiddlewaretoken': '{{ csrf_token }}'}, 
         dataType: "json", 
         success: function(response) { 

         alert(' likes count is now ' + response.likes_count); 
        }, 
         error: function(rs, e) { 
         alert(rs.responseText); 
         } 
        }); 
+0

나는이 변화를 만들었고, 나는 슬러그를 attr로 두었지만, 기능하지 않는다. 오류는 동일하다. models.py에서 나는 slugfield에 titulo를 저장 했으므로 attr은 'slug'입니다. 나는 진짜 오류를 볼 수 없다. 그렇지만 내 견해는 코멘 타리오를 찾지 못했고 그 이유는 알지 못합니다. – JohnWire

+0

슬러그 대신 이름을 사용하면 어떨까요? 업데이트 된 답변 –

+0

이름과 함께 작동하지 않습니다, 오류는 동일합니다. 404는 집/좋아/찾을 수 없습니다, 문제는 내가 생각하는 견해에 있습니다. – JohnWire