如何在没有刷新页面的情况下使用jQuery在Django中发出get请求?

时间:2015-08-26 12:17:55

标签: jquery ajax django rating

我用五个按钮(没有星星)制作了五星评级视图。它基本上加载了一个评级的页面,然后很快回到原始页面。如何使用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>标记,以便在有人评分后更新。感谢。

1 个答案:

答案 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
    }
});