Django Ajax返回模板作为数据

0 投票
2 回答
1887 浏览
提问于 2025-04-17 14:54

你想知道在用ajax请求一个视图时,怎么把模板数据返回给jquery的调用。

举个例子,我是这样发ajax请求的。

<script>
  function getProfile(username) {
     $.getJSON("/profiles/"+username, { username:{{ username }}}, function(json){
                            alert("Was successful?: " + json['success']);
                        });
                    }
   function addClickHandlers() {
           $(".person-name").click( function()
                getProfile(result.user.username) });
                    }
                    $(document).ready(addClickHandlers);
  </script>

这是我的django视图

def profiles_view(request, username):
#    if username:
#        selected_user = User.objects.get(username = username)
    results = {'success':False}
    if request.method == u'GET':
        GET = request.GET
        if GET.has_key(u'username'):
            results = {'success':True}
    json = simplejson.dumps(results)

    return HttpResponse(json, mimetype='application/json')

我可以把我的模板视图 profiles_view.html 传给HttpResponse吗?我不太确定我的模板应该怎么用。

2 个回答

0

如果你只是想通过ajax传递数据,那就不需要使用模板。

0

如果你需要同时显示HTML页面和JSON数据,可能需要发送两个响应。第一个是用TemplateResponse来返回HTML,第二个是用HttpResponse来返回JSON。虽然看起来发送两个请求不太高效,但第一次请求是一次性的,之后你只需要通过AJAX请求获取JSON数据就可以了。

你可以通过以下方式返回一个模板:

 return TemplateResponse(request, "profiles_view.html", results)

撰写回答