Python 如何动态重新渲染模板?

Python 如何动态重新渲染模板?,python,jquery,django,Python,Jquery,Django,目前,我正在尝试创建一个动态过滤器,用于在模板中列出模型对象。以下是django视图: def view_data(request): text = request.GET.get('text') persons = None if text: try: persons = models.Person.objects.get(code__regex=text) except models.Person.DoesNot

目前,我正在尝试创建一个动态过滤器,用于在模板中列出模型对象。以下是django视图:

def view_data(request):
    text = request.GET.get('text')
    persons = None
    if text:
        try:
            persons = models.Person.objects.get(code__regex=text)
        except models.Person.DoesNotExist:
            pass
    return render(request, 'view_data.html',
                  {'persons': persons if not isinstance(persons, models.Person) else [persons]})
模板中的相关部分:

<div class="jumbotron row">
  <form>
    <label>Alanyok szűrése</label>
    <input id="filter" type="text" placeholder="Keresett alany">
  </form>
</div>

<div class="row">
  <div class="col-4">
    <div class="list-group" id="list-tab" role="tablist">
      {% for person in persons %}
        <a class="list-group-item list-group-item-action" id="list-{{person.code}}" data-toggle="list" href="#" role="tab" aria-controls="{{person.code}}">{{person.code}}</a>
      {% endfor %}
    </div>
  </div>
  <div class="col-8">
    <div class="visualisation content">
        <div class="canvas_div">
          <canvas id="Canvas1" width="540" height="250" style="border:1px solid #202020;">
          </canvas>
        </div>
    </div>
  </div>
</div>

当我用Pycharm调试器检查它时,呈现返回正确的html,但在客户端html没有改变。如何使用新对象列表重新渲染?

您没有对返回的数据执行任何操作。在get方法调用中添加回调函数。在第一个参数中,您从服务器获得响应。使用该选项可以隐藏和显示页面上的内容。或者您甚至可以替换DOM中的元素。看


您没有对返回的数据执行任何操作。在get方法调用中添加回调函数。在第一个参数中,您从服务器获得响应。使用该选项可以隐藏和显示页面上的内容。或者您甚至可以替换DOM中的元素。看


将要替换的html代码的一部分放入新的html文件中,如下所示:

 return render(request, 'new_html.html',
             {'persons': persons if not isinstance(persons,models.Person) else [persons]})
新网页:

<div class="list-group" id="list-tab" role="tablist">
  {% for person in persons %}
    <a class="list-group-item list-group-item-action" 
       id="list-{{person.code}}" data-toggle="list" 
       href="#" role="tab" aria-controls="{{person.code}}">
       {{person.code}}
    </a>
  {% endfor %}
</div>
现在在ajax中,您可以动态加载新的html,如下所示:

 $( "#filter" ).keyup(function() {
    $.get("", 
          {text: $('#filter').val()},
          function(data){
              $( "#list-tab" ).replaceWith( data );
          } 
    );
});

将要替换的html代码的一部分放入新的html文件中,如下所示:

 return render(request, 'new_html.html',
             {'persons': persons if not isinstance(persons,models.Person) else [persons]})
新网页:

<div class="list-group" id="list-tab" role="tablist">
  {% for person in persons %}
    <a class="list-group-item list-group-item-action" 
       id="list-{{person.code}}" data-toggle="list" 
       href="#" role="tab" aria-controls="{{person.code}}">
       {{person.code}}
    </a>
  {% endfor %}
</div>
现在在ajax中,您可以动态加载新的html,如下所示:

 $( "#filter" ).keyup(function() {
    $.get("", 
          {text: $('#filter').val()},
          function(data){
              $( "#list-tab" ).replaceWith( data );
          } 
    );
});

使用jquery将返回的结果放置在适当的位置使用jquery将返回的结果放置在适当的位置