gpt4 book ai didi

javascript - Ajax 类似于 Django 中的按钮

转载 作者:行者123 更新时间:2023-12-03 02:49:26 26 4
gpt4 key购买 nike

我已经为“喜欢”按钮构建了下一个架构,但它不起作用。这是我的文件:

模型.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)

View .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')

url.py

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

.html

<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>

当我按下按钮时,就像它没有做任何事情一样。控制台告诉我:

POST htt jquery.min.js:4 p:/127.0.0.1.8000/home/like/404(未找到)

和:http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js

问题出在哪里?

感谢您的帮助

最佳答案

存在问题,因为您的 View 未通过 slug 字段找到 Commentario。你的 ajax { 'slug' : $(this).attr('titulo') ... 正确吗?您确定 'titulo' 是 slug 的正确字段,还是必须是 $(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);
}
});

关于javascript - Ajax 类似于 Django 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47955849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com