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
을 발견하지 않는 것이 거기에 당신의 도움
나는이 변화를 만들었고, 나는 슬러그를 attr로 두었지만, 기능하지 않는다. 오류는 동일하다. models.py에서 나는 slugfield에 titulo를 저장 했으므로 attr은 'slug'입니다. 나는 진짜 오류를 볼 수 없다. 그렇지만 내 견해는 코멘 타리오를 찾지 못했고 그 이유는 알지 못합니다. – JohnWire
슬러그 대신 이름을 사용하면 어떨까요? 업데이트 된 답변 –
이름과 함께 작동하지 않습니다, 오류는 동일합니다. 404는 집/좋아/찾을 수 없습니다, 문제는 내가 생각하는 견해에 있습니다. – JohnWire