Django-模板标签方法

Posted

技术标签:

【中文标题】Django-模板标签方法【英文标题】:Django- Template Tag Approach 【发布时间】:2016-03-02 16:59:34 【问题描述】:

如果存在特定类别,我正在尝试找出一种打印类别标题的方法。我遇到的问题是,由于我通过 for 循环浏览我的文章,如果类别存在,我不能只发布标题,否则它将多次打印出该标题。例如:

% for x in todays_articles %
 % with x.categories.all as categories %
 % for category in categories %
  % if category.title == "nfl" %
  <p><H1>NFL:
   <p>x.title category
  % endif %
  % if category.title == "nba" %
   <p>x.title category
  % endif %
 % endfor %
% endwith %

将多次打印出 NFL/NBA。我可以复制并粘贴多次。

<P>NFL: 

% for x in todays_articles %
 % with x.categories.all as categories %
 % for category in categories %
  % if category.title == "nfl" %
  <p>x.title category

并为每个类别执行此操作。我只是想知道是否有更聪明的方法。谢谢。

【问题讨论】:

您可以先循环搜索类别,然后循环搜索文章吗? 【参考方案1】:

我不是 100% 确定你在这里做什么,但我认为你想要 % ifchanged % 模板标签。

【讨论】:

【参考方案2】:

您可以考虑使用表格标签,然后在两个不同的列中打印 NFL 和 NBA 的结果。如果您需要,我可以进一步详细说明!

【讨论】:

【参考方案3】:

如果我理解正确,您的模板中似乎有一段代码需要重复多次。

为此,您可以使用模板include。

但是,如果您的项目已经按类别排序,您可能只想使用 ifchanged 标记,正如 Daniel Roseman 指出的那样。如果您的项目未按类别排序,您可能希望在视图代码中或通过单独的数据库查询拆分这些项目,并将它们作为单独的变量注入到您的模板中。

【讨论】:

以上是关于Django-模板标签方法的主要内容,如果未能解决你的问题,请参考以下文章

Jinja2 模板使用 Django 模板标签

django模板继承使用相同标签多个模板

Django 模板标签调试

AngularJS 与 Django - 模板标签冲突

AngularJS 与 Django - 冲突的模板标签

AngularJS 与 Django - 冲突的模板标签