如何在返回的AJAX调用上使用Django模板标记?

2024-10-01 19:27:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的AJAX脚本,它在名为AJAXBox的搜索字段中获取一个输入的字符串,并调用一个view函数,该函数使用一个过滤器查询数据库,并返回与输入参数匹配的所有用户对象的查询集。当我使用django模板标记遍历queryset时,它不起作用。我假设这是因为Javascript调用的输出实际上并没有输出queryset,而是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);

      });       

    });  
});

python代码的tl;dr本质上是:

^{pr2}$

当我转到模板中的html并执行以下操作时:

<div id="result">
    {% for person in result %}
        {{person.property}}
    {%endfor%}
</div>

模板标记循环不执行任何操作。实际上,我根本无法操作/设计输出,它只是一个普通的用户名字符串。在


Tags: django函数字符串标记div模板datahtml
1条回答
网友
1楼 · 发布于 2024-10-01 19:27:23

您没有在视图中调用模板。在

试试这个:

def AJAXsearch(request):
    searchterm = request.GET['searchterm']
    result = UserObj.objects.filter(person_name=searchterm)
    return render(request,"path/to/your/template.html", {"result":result})

根据注释,您正在将页面的主代码与生成<div>块的代码一起重用。在

在这种情况下,我建议将该块拉到一个单独的文件中,比如"resultlist.html"和{a1},因此:

resultlist.html

^{pr2}$

然后在userprofile.html

{# Lots of code around the result list #}
{% include "resultlist.html" %}
{# Lots of code around the result list #}

相关问题 更多 >

    热门问题