将渲染的视图传递给Django中另一个应用程序的视图

时间:2019-03-19 18:34:09

标签: django django-templates django-views

我正在尝试在同一网页上显示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">

是否有解决方案,或者是实现应用之间链接的更好方法?

1 个答案:

答案 0 :(得分:1)

您可以使用 **

  

javascript和jquery

**

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=IdenDB;Trusted_Connection=True;MultipleActiveResultSets=true");
}

成功后,您可以将html附加到div

**

  

Django解决方案:

**

render函数返回HttpResponse(内容,内容类型,状态) 因此,要获取模板html,您需要:

$.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
});

这是render的源代码