如何使用render_to_response在Django中的div中呈现html页面?

时间:2016-01-14 13:53:51

标签: angularjs django django-views

我有一个视图,它使用render_to_response函数将数据返回到模板,如下所示 -

@page_template("app/jsComp.html") # just add this decorator
def jsComp(request, template="app/jsComp.html", extra_context=None):
    basic_v_obj = js_basicinfo.objects.get(cid = request.session.get('id'))
    # Sends json data objects in context container
    .....
    context = {
    'cars': basic_v_obj,
    'companies':wc_v_obj,
    }
    context['wc_V_json'] = mark_safe(json.dumps(wc_v_json_list, ensure_ascii=False))
    return render_to_response(template, context, context_instance=RequestContext(request)) 

能够使用以下符号

查看模板(jsComp.html)中的上下文数据
  // Global variable jdata
    {% if wc_V_json %}
    jdata = {{ wc_V_json|safe }};       
    {% endif %}
    alert('Sk: '+JSON.stringify(jdata));

我想在另一个模板中的div中使用此模板,例如index.html 另外,我想通过angularjs ajax调用从index.html发送id。 所以,我的观点应该考虑cid等于我通过angularjs传递的值。

我的问题是如何在index.html中执行此操作?

$scope.preview_ang = function (clicked_id) {
        $http({
            method: 'POST',
            url: 'pvcan',
            data: {
                'id': clicked_id
            },
            headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
            })
           .success(function (data) {
             if (data == "null") {
                 alert('server returned nothing but success');
             } else {
                 /// WHAT SHOULD I WRITE HERE SUCH THAT I CAN RENDER jsComp.html IN A DIV IN THE INDEX.HTML
               }
           })
           .error(function (data, status, headers, config) {
                      alert('server returned error :'+status);
           })
    }

我应该在我的angularjs ajax调用的成功函数中写什么来在一个带有一些id的div中渲染jsComp.html?你能帮我解决这个问题吗?

我知道我可以使用这样的东西,但这不起作用(尝试在成功函数中调用load_page但没有用。我怎样才能达到这个要求?

        function load_page(){
            document.getElementById("info").innerHTML='<object type="text/html" data="previewcan" style="width:100%;height:100%;"></object>';
        }

在视图中尝试了以下但不起作用 - (请求,响应)

@page_template("app/jsComp.html") # just add this decorator
def jsComp(request, template="app/jsComp.html", extra_context=None):
    data=json.loads(request.body.decode())
    v_cid=data["id"]
    basic_v_obj = js_basicinfo.objects.get(cid = v_cid)
    # Sends json data objects in context container
    .....
    context = {
    'cars': basic_v_obj,
    'companies':wc_v_obj,
    }
    context['wc_V_json'] = mark_safe(json.dumps(wc_v_json_list, ensure_ascii=False))
    return HttpResponse(context, context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:0)

这不是一个Django问题。如果您要从服务器返回要插入页面的数据,只需使用普通的jQuery方法即可:

.success(function(data) {
    $('#info').html(data)
})