我想知道我们如何从不同的应用程序中“调用”一个应用程序。基本上,我有,例如:
- 一个日历应用程序,它执行特定过程以在 html 中呈现日历
- 显示网站 index.html 的“主要”应用程序
我希望主应用程序调用日历应用程序并将其呈现在侧边栏中的内容。
例如,CodeIgniter 框架可以处理这个问题。一个控制器可以调用另一个控制器,将它返回的内容(html 输出)保存在一个变量中,最后将该变量包含在将用于呈现最终 html 文件的上下文中。
Django有可能吗?谢谢
好吧,我想我可能会找到解决方案。我是 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', {})
然后在 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)
这就是诀窍!
有点...
有一个模板标签{% ssi %}允许您将一个模板包含在另一个模板中,唯一的事情是您需要向父模板传递另一个模板所需的所有上下文变量。