최근 작업을 진행하면서 믹스에 대한 해결책을 제시했습니다. 여기
http://www.radioactivethinking.com/rateit/example/example.htm이있다 : 첫째, 내가 발견 RateIt를 사용하고있어 설정이 매우 간단하고 (당신의 base.html
템플릿에 RateIt에게 *.js
및 .*css
파일을 추가)을 사용하는 것은 매우 intuitve 할 수
urls.py
url(r'^object/rate/$', RateMyObjectView.as_view(), name='rate_my_object_view'),
my_template : 내 솔루션의 핵심 조각 .html 중에서
<div class="rateit" data-rateit-resetable="false">Rate it!</div>
아약스.(예를 들어, xhr
설정) JS
$('.rateit').bind('click', function(e) {
e.preventDefault();
var ri = $(this);
var value = ri.rateit('value');
var object_id = ri.data('object_id');
$.ajax({
url: '/object/rate/?xhr',
data: {
object_id: object_id,
value: value
},
type: 'post',
success: function(data, response) {
console.log("ajax call succeeded!");
},
error: function(data, response) {
console.log("ajax call failed!");
}
});
});
일부보기 비트 제임스 베넷 출신 :
http://www.b-list.org/weblog/2006/jul/31/django-tips-simple-ajax-example-part-1/
views.py
from django.views.generic.base import View
from .models import MyObject
class RateMyObjectView(View):
def post(self, request):
my_object = MyObject.objects.all().last()
xhr = 'xhr' in request.GET
star_value = request.POST.get('value', '')
my_object.score = star_value
my_object.save()
response_data = {
'message': 'value of star rating:',
'value': star_value
}
if xhr and star_value:
response_data.update({'success': True})
else:
response_data.update({'success': False})
if xhr:
return HttpResponse(json.dumps(response_data), content_type="application/json")
return render_to_response(self.template_name, response_data)
models.py
from django.db import models
class MyObject(models.Model)
score = models.FloatField(max_length=1, default=0)
이것은 단순한 해결책이며 개체 목록의 마지막 항목에있는 현재 별점을 대체합니다. 점수를 자체 모델로 저장하고 객체에 링크하는 것이 더 좋으므로 이상적이지 않습니다. 이것은 당신이 그들을 저장할 수 있었고, 평균과 같은 계산을했습니다. 저는 지금이 일을하고 있고, 끝나면이 대답을 업데이트 할 것입니다.
감사합니다. 나는 지금 그것을 전부 분류했다. AJAX 전체에 대해 머리를 맞출 필요가 있었다고 생각해보십시오. –