当前位置: 首页 > 知识库问答 >
问题:

如何在Django模板中嵌套或联合使用两个模板标签?

云宝
2023-03-14

我试图使用模板过滤器来运行循环,但我无法在同一个语句/模板中组合两个python语句。在模板中组合两个变量的正确方法是什么?请看下面的语法和解释:

我正在建立一个双索引的论坛,意思是,我有一个col-md-2与类别列表。每个类别都有论坛,根据点击的类别,该类别的论坛填充下一个col-md-2。剩下的col-md-8根据选择了哪个类别和哪个论坛来获取其内容。

我的逻辑:

from pybb.models import Forum

@register.filter
def forumindexlistbycat(category):
    forumlistbycat = Forum.objects.filter(category=category)
    return forumlistbycat

在我的模板中,我尝试按如下方式加载它:

{% load i18n pybb_tags %}

<div class='category'>
    {% if category %}
    <h3>{{ category }}</h3>
    {% include 'pybb/forumindex_list.html' with forum_list=category.forums_accessed category=category parent_forum='' %}
    {% else %}
    <h3>{{ forum.category }}</h3>
    {% include 'pybb/forumindex_list.html' with forum_list= %}{{ forum.category|forumindexlistbycategory }}
    {% endif %}
</div>

共有1个答案

毋宪
2023-03-14

因此必须首先正确注册模板标记。

from django import template
from pybb.models import Forum

register = template.Library()

@register.filter
def forumindexlistbycat(category):
    forumlistbycat = Forum.objects.filter(category=category)
    return forumlistbycat

将上面的代码放在名为筛选器的文件中,这样forumindexlistbycat.py并将该文件移动到应用程序中的templatetags文件夹中。如果您没有这个文件夹,您必须创建它。不要忘记在您的templatetags文件夹中添加空文件__init__.py。现在您可以在模板中使用它,因此:

{% load i18n forumindexlistbycat %}

当你的templatetag注册后,你就可以用它的名字加载它。然后像这样使用它:

{% include 'pybb/forumindex_list.html' with forum_list=forum.category|forumindexlistbycategory %}
 类似资料:
  • 问题内容: Django在其模板中将其视为某些变量。我怎样才能逃避或或使得Django不把它当作变量。 应该打印完全一样。 问题答案: 我相信您正在寻找template标签。 如链接到文档所述, 由于模板系统没有“转义”的概念,因此要显示模板标签中使用的位之一,必须使用标签。 例如: 将显示为:

  • 问题内容: 我在Django模板中使用static模板标签: 但是,我需要使用的是文件名,该文件名是模型对象的属性(即,我将其作为上下文传递到此模板。但是,如何在静态模板标记中包含该文件名呢?这会引发错误)。 有办法吗? 问题答案: 您可以在静态模板标记中使用use变量。请注意,您不需要或

  • 问题内容: 我可以在Javascript中使用Django的模板标签吗?就像在jQuery中使用动态向页面添加表单一样。 问题答案: 是的,我经常这样做。您的javascript必须通过django提供,但是如果您只是将html标头中的javascript作为内联javascript放上了,那就可以了。 例如:我用它在我使用的动态表单上加上前缀。 请注意,在“ base.html”中,我有一个ht

  • 我创建了新项目,但找不到出错的地方。 Django versiob - 3.1.5 蟒蛇 3.7.4 模板DoesNotExist位于/index。html请求方法:GET请求URL:http://127.0.0.1:8000/Django版本:3.1.5异常类型:TemplateDoesNotExist异常值: 索引。html异常位置:C:\Users\user\PycharmProjects\

  • 我正在做一个项目,我需要使用几个DateTime字段,我已经在我的模型中定义了,然后在模板中,我正在使用https://tempusdominus.github.io/bootstrap-4/插件,但是当我提交表单时,有两个问题来吧: 1) :Django说为所有DateTime字段输入有效的日期/时间(2):选择有效选项<代码>[“玉米油”]不是可用选项之一。 以下是我尝试过的: 从: 从: 从

  • 了解如何在 Dreamweaver 中创建用于控制共享设计元素的页面中的内容的嵌套模板。 嵌套模板是指其设计和可编辑区域都基于另一个模板的模板。嵌套模板对于控制共享许多设计元素的站点页面中的内容很有用,但在各页之间有些差异。例如,基本模板中可能包含更宽广的设计区域,并且可以由站点的许多内容提供者使用,而嵌套模板可能进一步定义站点内特定部分的页面中的可编辑区域。 基本模板中的可编辑区域被传递到嵌套模