使用AJAX获取Django视图数据

时间:2018-04-26 09:06:57

标签: javascript python ajax django django-templates

目前我正在构建一个通过AJAX更新主页数据的应用程序。 根据我使用的this问题(请参阅下面的代码/ 1 /)ajax来刷新我的页面。我的另一个目标是从视图中捕获某个变量并将其用作JS变量。如果我在AJAX请求中只使用Django模板变量,那么我的变量就不会刷新。

首次尝试:

Django视图:

def fetch_data (request):

    query_1=Objects.all()
    query_2=Objects.all()

    #From these  queries I colect data and push  them to lists.

    context= {
                'variable_1': variable_1,
                'variable_2': variable_2,
                'time_variable': time_variable #changing in every minute
           }

    return render(request, 'app/index.html', context)

AJAX:

这里我使用AJAX请求。我在每一分钟都运行它来实现我的页面我的页面。我的问题是我想加载,让我们说time_variable在AJAX中再次使用它。如果我在AJAX重新加载时像单个模板变量({{time_variale|safe}})一样使用它,我会一次又一次地获得相同的变量而不是因为刷新而导致的新变量。我怎么抓住Django变量?

setInterval(function(){
    if(new Date().getSeconds() === 0) {     
        $.ajax({
        url:'{% url 'fetch_data' %}',
        success: function (data){
              $('body').html(data); #This working, the data refreshing
              var="{{time_variable|safe}}"; #Here I always get the same in every minutes despite the variable get new value in every minute in the view.
           }
        });
  }
},1000)

1 个答案:

答案 0 :(得分:0)

解决方案1 ​​

以JSON格式从服务器获取数据并更新变量和HTML。需要一个新视图来向AJAX请求提供数据。

    setInterval(function(){
    if(new Date().getSeconds() === 0) {     
        $.ajax({
        url:'{% url 'fetch_data' %}',
        success: function (data){
              response_json = JSON.parse(data)

              $('body').html(response_json.html_data); #This working, the data refreshing
              var=response_json.variable_value; #Here I always get the same in every minutes despite the variable get new value in every minute in the view.
           }
        });
    }
   },1000)

解决方案2

按间隔重新加载页面,这不是推荐的建议,因为它只会降低后端的性能并且效率低下。