我希望我的观点能够返回我想在Ext.Ajax.request成功函数中使用的页面内容和一些参数。
views.py
def importFile(request):
form = ImportVectorForm()
html_response = render_to_response("page_content.html", {'form': form, 'folder':folder, 'nodes':nodes},context_instance=RequestContext(request))
if request.POST:
form = ImportVectorForm(request.POST, request.FILES)
if form.is_valid():
## here im dealing with the form...
object = MyObject.objects.create()
html_response = render_to_response("page_content.html", {'form': form},context_instance=RequestContext(request))
json_param = serializers.serialize('json', object)
return StreamingHttpResponse(html_response, content_type="plain/text")
else:
html_response = render_to_response("page_content.html", {'form': form},context_instance=RequestContext(request))
return StreamingHttpResponse(html_response, content_type="plain/text")
ajax.js:
importFileAjax = function(node_id){
Ext.Ajax.request({
method: "GET",
form: "importForm",
url: "/basqui/file/import/" + node_id + "/",
success: function(r){
// here I would like to access the model instance created properties
Ext.get('table').update(r.responseText); //this update the page content
}
});
}
我想将html_response
和json_param
都传递给Ajax。第一个更新div
,第二个访问其属性。
这样做的正确方法是什么?
如何创建包含html模板作为字符串和模型实例的JSON?
答案 0 :(得分:2)
首先,使用render_to_string
将模板片段作为HTML字符串。其次,将对象序列化为Python dict,而不是JSON。然后你可以一次性将整批货转换成JSON。
html = render_to_string("page_content.html", {'form': form}, context_instance=RequestContext(request))
param = serializers.serialize('python', object)
data = json.dumps({'html': html, 'param': param})
return StreamingHttpResponse(data, content_type="application/json")
现在,您的JS可以解析JSON并访问html
和param
值。