【问题标题】:How do i render a template inside another template?如何在另一个模板中渲染模板?
【发布时间】:2010-08-25 11:14:16
【问题描述】:

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

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

菜单是动态的 (http://code.google.com/p/django-treemenus/)。 menu-app 拥有一个呈现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 一个模板需要一个由特定视图渲染的模板?!

我不想将mainmenu = Menu.objects.get(id = 1) 放在我的索引视图中,因为菜单也会在其他页面上...我在想urls.py 中的 iframe + 规则,但这是一个丑陋的解决方法...

我说得有道理吗?!

【问题讨论】:

  • 请阅读右侧的格式说明 -- 您需要缩进代码才能将其标记为代码!

标签: python django templates url


【解决方案1】:

乍一看,这似乎是添加inclusion tag 的情况。您可能想要编写一个呈现树状菜单的自定义标签。然后,您可以在主视图中传递必要的上下文变量,以使该标记发挥作用。

来自文档:

另一种常见的模板标签类型是通过渲染另一个模板来显示一些数据的类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 2016-11-13
    • 2013-06-16
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多