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

Fir*_*ras 5 django templates view include

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

  • 一个日历应用程序,它执行某个过程以在html中呈现日历
  • 一个"主"应用程序,显示网站的index.html

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

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

Django有可能吗?谢谢

Fir*_*ras 4

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

因此,我创建了我的应用程序Calendar和我的应用程序Show。我希望Show调用Calendar ,呈现其模板,然后将结果插入Show模板内。

为此,我使用TemplateResponse而不是HttpResponse在日历端:

# Calendar view

from django.template.response import TemplateResponse

def render_calendar(request):
    return TemplateResponse(request, 'calendar/calendar-template.html', {})
Run Code Online (Sandbox Code Playgroud)

然后在 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)
Run Code Online (Sandbox Code Playgroud)

这就是窍门!