【问题标题】:django ajax return template as datadjango ajax 将模板作为数据返回
【发布时间】:2013-01-21 03:36:36
【问题描述】:

向视图发出 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 吗?我不确定我的模板来自哪里?

【问题讨论】:

  • 你可以看看这个问题,如果你觉得有用link

标签: jquery python ajax django django-templates


【解决方案1】:

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

【讨论】:

  • 我想将模板加载到特定的 div 中,并且在同一页面中发出 ajax 请求。
【解决方案2】:

如果您需要 HTML 视图和 JSON 视图,您可能需要两个响应。第一个来自TemplateResponse,第二个来自HttpResponse。两个请求似乎效率低下,但第一个请求是一次性的,之后您只需要使用 AJAX 请求的 JSON 响应。

您可以通过以下方式返回模板:

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

【讨论】:

  • 我只需要一个 TemplateResponse,我发出 ajax 请求的唯一原因是在特定的 div 中显示 html。有关于 TemplateResponse 的示例吗?
  • 我在答案中添加了一个 sn-p。如果只需要一个ajax请求,可以考虑将两个请求合并到一个模板视图中,否则最好分开。
猜你喜欢
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 2012-10-09
  • 1970-01-01
  • 2015-09-11
  • 2015-11-24
相关资源
最近更新 更多