简体   繁体   English

django ajax返回模板作为数据

[英]django ajax return template as data

How do you when making an ajax request to a view return the template data to the jquery call. 在向视图发出Ajax请求时,如何将模板数据返回给jquery调用。

As an example, i am making an ajax call this way. 例如,我正在以这种方式进行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>

My django view 我的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')

Can i pass my template view profiles_view.html to the HttpResponse? 我可以将模板视图profiles_view.html传递给HttpResponse吗? i am not sure where my template comes in? 我不确定我的模板放在哪里?

If you need both HTML view and JSON view, you may need two responses. 如果同时需要HTML视图和JSON视图,则可能需要两个响应。 First is from TemplateResponse , second one is from HttpResponse . 首先是来自TemplateResponse ,第二个是来自HttpResponse Two requests seem inefficient, but the first request is once for all, afterwards you only need JSON response by use of AJAX request. 两个请求似乎效率低下,但是第一个请求是一次,之后,您只需要使用AJAX请求进行JSON响应即可。

You can return a template by: 您可以通过以下方式返回模板:

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

如果您只是要通过ajax传递数据,则不需要模板。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM