我用五个按钮(没有星星)制作了五星评级视图。它基本上加载了一个评级的页面,然后很快回到原始页面。如何使用jQuery不刷新原始页面,但仍然可以调用视图并更新我的评级?
views.py
def RateBusiness(request, pk, rate):
business = Business.objects.get(id=pk)
defaults = {'rating': rate}
BusinessRating.objects.update_or_create(business=business, user=request.user, defaults=defaults)
return HttpResponseRedirect('/business-detail/%s/' % pk)
原始页面链接:domain/business-detail/2/
评分页面链接:domain/business-detail/2/rate/1/
模板
<div class="btn-group">
<a class="btn btn-sm btn-default" href="{% url 'rate-business' object.id 1 %}">1</a>
<a class="btn btn-sm btn-default" href="{% url 'rate-business' object.id 2 %}">2</a>
<a class="btn btn-sm btn-default" href="{% url 'rate-business' object.id 3 %}">3</a>
<a class="btn btn-sm btn-default" href="{% url 'rate-business' object.id 4 %}">4</a>
<a class="btn btn-sm btn-default" href="{% url 'rate-business' object.id 5 %}">5</a>
</div>
虽然问题是without refreshing page
,但我确实需要刷新显示当前评级的<p>
标记,以便在有人评分后更新。感谢。
答案 0 :(得分:1)
使用Ajax。使用jQuery非常简单。
它会在提供的网址上创建异步请求,在成功部分,您可以更改<p>
标记中的值以显示评分的平均值。
根据评论修改:
在您的HTML中,创建类似此内容的<p>
标记
<p id="avg_rating"></p>
你的Ajax电话应该是:
$.ajax({
url:'{% your_url %}',
success: function (response) {
console.log(response); //response is value which you return from Django view
$("#avg_rating").text(response); //this statment will fill `<p id="avg_rating">` with value you return from Django view
}
});