Django:如何在另一个应用程序中集成应用程序

时间:2013-04-18 11:49:22

标签: django templates view include

我想知道如何从不同的应用程序中“调用”应用程序。 基本上,我有,例如:

  • 执行某个过程以在html
  • 中呈现日历的日历应用
  • 显示网站index.html的“主要”应用

我希望主应用程序调用日历应用并在侧边栏中插入它呈现的内容。

例如,CodeIgniter框架可以处理它。控制器可以调用另一个控制器,将其返回的内容(html输出)保存在变量中,最后在用于呈现最终html文件的上下文中包含此变量。

Django有可能吗? 感谢

2 个答案:

答案 0 :(得分:4)

好吧,我想我可能找到了解决方案。我是Django的新手,所以我不知道这是不是一个很好的方法,如果它破坏了一些常规规则,如果它打开一些安全漏洞,或者简单地说,还有其他更好的方法,但无论如何,它的工作原理...

所以,我创建了我的应用程序日历,我的应用程序显示。 我希望显示来调用日历,渲染其模板,然后将结果插入显示的模板中。

为此,我在日历方面使用了TemplateResponse而不是HttpResponse

# Calendar view

from django.template.response import TemplateResponse

def render_calendar(request):
    return TemplateResponse(request, 'calendar/calendar-template.html', {})

然后在Show方面,获取TemplateResponse实例,调用其render()方法,最后在上下文中插入rendered_content

# Show view

from calendar import views

def show(request, show_id):
    cal = views.render_calendar(request)
    cal.render()
    context = {"calendar": cal.rendered_content}
    return render_to_response("show/show-template.html", context)

这就是诀窍!

答案 1 :(得分:0)

排序......

有一个模板标记{% ssi %},允许您将一个模板包含在另一个模板中,唯一需要的是您需要将父模板传递给另一个模板中所需的所有上下文变量。