使用Ajax和Django条件显示html变量

时间:2019-02-09 20:05:03

标签: ajax django

我刚开始在Django中使用Ajax调用。我试图根据Ajax调用的get类型实现一个简单的Display或不显示:

观看次数:

def dynamic(request):
    context = {}
    if request.method == 'GET':
        if 'backtest_type' in request.GET:
           context['display_details'] = False
           print ('Im not displaying')

        elif 'change_val' in request.GET:
            context['display_details'] = True
            print ('Im displaying')

        else:
            context['display_details'] = False

    return render(request, "demo/dynamic.html", context)

在我的模板中:

{% extends 'demo/base.html' %}
{% block body %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<link rel="stylesheet" href="{% static 'css/dynamic.css' %}">


<script>
  $(document).on('click','#id_backtest_type', function () {
    console.log( $(this).val() );
    $.ajax({
        type: 'get',
        data: {'backtest_type': 1},
        success: function (data) {
          console.log('data  sent ' + data);
      },
        failure: function(data) {
          alert('Got an error dude');
        }
      });
  });
  $(document).on('click','#btnClick', function () {
    // console.log( $(this).val() );
    $.ajax({
        type: 'get',
        data: {'change_val': 1},
        success: function (data) {
          console.log('data  sent ' + data);
        failure: function(data) {
          alert('Got an error dude');
        }
      });
    });
</script>

<div>
  {% if display_details %}
  <h1>I'm diplaying</h1>
  {% endif %}
</div>

<div id="btnClick" class="col-sm-4">
    <div class="btn-group btn-group-justified" role="group">
      <div class="btn-group" role="group">
        <button class="btn btn-secondary" type="button">Don't Display</button>
      </div>
    </div>
  </div>

<div id="id_backtest_type" class="col-sm-4">
    <div class="btn-group btn-group-justified" role="group">
      <div class="btn-group" role="group">
        <button class="btn btn-secondary" type="button">Display!</button>
      </div>
    </div>
  </div>

{% endblock %}

从控制台,我确定使用ajax正确发送了get请求(正在发送get请求,并且控制台将打印以下语句:

  

[09 / Feb / 2019 20:00:56]“ GET / dynamic /?backtest_type = 1 HTTP / 1.1” 200   6530

     

我正在显示

但是,即使ajax调用正常工作,模板也不会最终呈现<h1>I'm diplaying</h1>。我对Ajax有误解吗?

谢谢!

0 个答案:

没有答案