使用AJAX html()加载Django模板导致不需要的文本

Loading Django template using AJAX html() resulting in unwanted text

本文关键字:不需要 文本 Django html AJAX 加载 使用      更新时间:2023-09-26

我正在通过Ajax加载一个模板。

这就是客户端的样子:

function AJAX_query(query_JSON){
    $.ajax({
        type: 'GET',
        url: '/ajax_request/',
        data: query_JSON,
        datatype: "json",
        success: function(data){
            $("#search_results").html(data);
        },//success
        error: function(){
            alert("AJAX - failure.");
        }//error
    });//.ajax
};//AJAX_query

回到服务器,我有一个带有分页的简单模板渲染。

def Selector_Query(request, query):
   query = query.split(",")
   # Filter model based on query
   some_models = Some_Model.objects.all().filter(whatever = query[n])
   # PAGINATION
   paginator = Paginator(some_models, 30)
   try:
        some_models = paginator.page(query[n])
   # If page is not an integer, deliver first page.
   except PageNotAnInteger:
        some_models = paginator.page(1)
   # If page is out of range (e.g. 9999), deliver last page of results.
   except EmptyPage:
       some_models = paginator.page(paginator.num_pages)
   last_page = paginator.num_pages
   context = RequestContext(request, {
      "some_models":some_models,
      "last_page":last_page,
      "page_number":query[n],
   })
   template = loader.get_template("some_folder/some_template.html")
   return HttpResponse(template.render(context))

当我收到数据时,顶部总是这样:

Content-Type: text/html; charset=utf-8

如果我使用load()而不是html(),则以上内容将不再出现。然而,据我所知,我不能使用load,因为load()需要一个url,我宁愿在没有url的情况下工作,因为我正在发送复杂的参数。因此,AJAX的全部原因就在第一位。

知道为什么会发生这种情况,以及我应该如何解决吗?

发现问题。这是

return HttpResponse(template.render(context))

需要

    return render_to_string("some_folder/some_template.html", context)