如何在另一个模板中渲染模板?

时间:2010-08-25 11:14:16

标签: python django templates url

我是Django和Python的新手,我被卡住了!解释起来很复杂,但我会尝试一下......我的index.html模板带有一个包含标签:

{% include 'menu.inc.html' %}

菜单是动态的(http://code.google.com/p/django-treemenus/)。菜单应用程序包含一个呈现menu.inc.html的视图:

from django.http import HttpResponse
from django.template import Context, loader
from treemenus.models import Menu

def mymenu(request):
    mainmenu = Menu.objects.get(id = 1)
    template = loader.get_template('menu.inc.html')
    context = Context({
        'mainmenu':mainmenu,
    })

    return HttpResponse(template.render(context))

因此,当我访问index.html时,服务器会将其提供给我,django将加载并提供menu.inc.html!但不是内容!我的问题是:

  1. 如何将menu.inc.html反向链接到视图?!或
  2. 如何告诉django模板需要特定视图的渲染模板?!
  3. 我不希望在我的索引视图中放置mainmenu = Menu.objects.get(id = 1),因为菜单也会出现在其他页面上......我在考虑urls.py中的iframe +规则,但这是一个丑陋的解决方法。 ..

    我有意义吗?!

1 个答案:

答案 0 :(得分:2)

乍一看,这似乎是添加inclusion tag的情况。您可能希望编写呈现树状菜单的自定义标记。然后,您可以从主视图传递此标记的必要上下文变量。

来自文档:

  

另一种常见类型的模板标记是通过呈现另一个模板来显示某些数据的类型。