我正在尝试在同一个网页上显示2个应用程序的输出,但在尝试使用here提议的解决方案时遇到问题。
我有一个“main_app”处理大部分页面的内容,并希望在同一页面上添加“sub_app”(即呈现的<div>
元素)的输出。
这是我如何在sub_app
视图中收集main_app
的输出:
from sub_app.views import sub_app_view #
def main_app_view(request):
my_sub_app_html = user_tests(request) #supposed to get rendered HTML content from sub_app
context = {
'sub_app_html ': my_sub_app_html,
}
return render(request, 'main_app.html', context)
然后在sub_app
中的视图:
def sub_app_view(request):
context = {
'sub_app_context': "foo",
}
return render(request, 'sub_app/sub_app.html', context)
main_app.html
包含:
<p>
{{ sub_app_html }}
</p>
和sub_app.html
:
<div id="mydiv">
{{ sub_app_context }}
</div>
但是,不是从sub_app_view
正确显示呈现的HTML,而是在浏览器中的main_app.html
中显示的是:
<HttpResponse status_code=200, "text/html; charset=utf-8">
。
有没有解决方案,或者更好的方式来实现应用程序之间的链接?
你可以用**做到这一点
javascript和jquery
**
$.ajax({
type: "get",
url: url_app_1,
data: data,
success: here add your html to your div1,
dataType: dataType
});
$.ajax({
type: "get",
url: url_app_2,
data: data,
success: here add your html to your div2,
dataType: dataType
});
并且在成功中你可以将html附加到你的div
**
Django解决方案:
**
render函数返回一个HttpResponse(content,content_type,status),以获得你需要的模板html:
def main_app_view(request):
my_sub_app_html = user_tests(request)
context = {
# you need to get content then decode
'sub_app_html ': my_sub_app_html.content.decode("utf-8"),
}
return render(request, 'main_app.html', context)
这是render的源代码