Python 如何动态重新渲染模板?
目前,我正在尝试创建一个动态过滤器,用于在模板中列出模型对象。以下是django视图: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
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将返回的结果放置在适当的位置