Eaz*_*zyC 5 python django ajax jquery
我有一个简单的AJAX脚本,它在命名的搜索域中获取输入的字符串,AJAXBox并调用一个查看函数,该函数使用过滤器查询数据库,并返回与输入的参数匹配的所有User对象的查询集.当我使用django模板标签迭代查询集时,它不起作用.我假设这是因为我的Javascript调用的输出实际上并不输出查询集,而是django模板无法识别的某种类型的字符串.我如何解决这个问题,以便我的AJAX调用返回django输出中的正常渲染函数的真正的django兼容查询集?
AJAX的JS:
$(document).ready(function(){
$('#AJAXBox').keyup(function() {
var searchedterm;
searchedterm = $(this).val();
$.get('/AJAXsearch/', {searchterm: searchedterm}, function(data){
$('#result').html(data);
});
});
});
Run Code Online (Sandbox Code Playgroud)
python代码的tl; dr基本上是:
def AJAXsearch(request):
searchterm = request.GET['searchterm']
result = UserObj.objects.filter(person_name=searchterm)
return HttpResponse(result)
Run Code Online (Sandbox Code Playgroud)
当我在模板中使用我的html并执行以下操作时:
<div id="result">
{% for person in result %}
{{person.property}}
{%endfor%}
</div>
Run Code Online (Sandbox Code Playgroud)
模板标记循环不执行任何操作.事实上,我根本无法操纵/设计输出,它只是一个普通的用户名字符串.
小智 5
您没有在视图中调用模板.
试试这个:
def AJAXsearch(request):
searchterm = request.GET['searchterm']
result = UserObj.objects.filter(person_name=searchterm)
return render(request,"path/to/your/template.html", {"result":result})
Run Code Online (Sandbox Code Playgroud)
根据评论,您将重新使用页面的主要代码和生成<div>块的代码.
在这种情况下,我建议将该块拖到一个单独的文件中,"resultlist.html"并在主模板中包含,以便:
resultlist.html:
<div id="result" >
{% for person in result %}
{{person.property}}
{%endfor%} </div>
Run Code Online (Sandbox Code Playgroud)
然后在userprofile.html:
{# Lots of code around the result list #}
{% include "resultlist.html" %}
{# Lots of code around the result list #}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |