Django-ratings与Jquery集成?
我该如何让django-ratings和Jquery一起工作呢?
我想做的是让用户可以选择给产品多少颗星星,并且让这个评分的处理能够异步进行。我知道这可能就是基本的AJAX技术,如果这个问题很简单,我很抱歉。
提前谢谢大家。
3 个回答
0
你说得对,这其实是一个基本的Ajax,但你可能需要一个复杂的算法来计算星星的数量。
2
我不太确定我是否理解你的问题,不过你的问题是关于JavaScript的,还是关于模型的呢?从JavaScript的角度,我用了一些这样的代码:
STARS_ELEMENT.stars({
callback: function(ui, type, value){
$.post('URL_ADDRESS', {rate: value},
function(data){
STARS_ELEMENT.stars("select",data);
});
}
然后在我的视图中,我会有一个函数来处理这个请求,做这样的事情:
p = Product.objects.get(id=product_id)
p.rating.add(score=int(request.POST['rate']), user=request.user, ip_address=request.META['REMOTE_ADDR'])
p.save()
然后用这个请求给我返回最新的汇率值。你是想问这个吗?
1
通常,把代码改成AJAX的方式很简单,只需要把:
return HttpResponse(....)
替换成:
if request.is_ajax():
return json_response
else:
return HttpResponse(....)
甚至可以直接用AJAX:
if request.is_ajax():
return json_response
else:
return HttpResponseForbidden('Only AJAX please!')
不过,从我看到的情况来看,这里有一些比较复杂的模式来生成实际的响应。所以,你可以尝试在jQuery的AJAX响应处理程序中处理这个响应,解析它;或者你可以为AddRatingView的call写一个装饰器,这样可以在Python端解析响应,并返回适合jQuery使用的JSON格式。
我假设你不想对现有的django-rating代码做太多修改,比如为了保留将来升级的可能性。