在 Django 中自定义模板标签以过滤博客中的featured_posts



我从这篇文章中得到了一个提示 自定义 Django 中的标签以过滤帖子模型中的帖子

我已经创建了模板标签,但我不确定如何在我的 html 中使用它。我有一个家.html我想在那里展示三个特色帖子。我正在寻找类似 {% 表示 featured_post %} 中的帖子,然后显示帖子详细信息。

另外,我是否必须像上面的帖子中那样创建一个featured_posts.html,因为我不想为特色帖子添加任何额外的页面。我只是希望他们除了其他东西之外,还在我的主页上添加。

我要做的是我创建了一个模板标签,如下所示

from django import template

register = template.Library()

@register.inclusion_tag('featured_posts.html')
def featured_posts(count=3):
if Post.is_featured:
featured_posts = Post.published.order_by('-publish')[:count]
return {'featured_posts': featured_posts}

我在这里面临的问题是我无法从模型导入 Post 模型。我的目录结构有点像这样:- 我有一个名为帖子的应用程序。 在里面我有 models.py 和模板标签模块,在模板标签里面我有blog_tags.py

我无法进行相对导入。

然后创建了一个新页面featured_posts.html如下:-

<ul>
{% for post in featured_posts %}
<li>{{ post.title }} </li>
{% endfor %}
</ul>

现在,我想在家里使用它,.html。如何使用它?

编辑:- 如上所述,我可以加载模型如下:-

from posts.models import Post

主页.html

{% load blog_tags %} 
{% featured_posts %}

调用您的标签。就是这样。

{% featured_posts count=15 %}

请注意,这里的featured_posts不是上下文中的帖子列表(在循环中迭代for(,而是函数名称:def featured_posts(count=3)。它们在您的代码中具有相同的名称,这可能使您有点困惑。

相关内容

  • 没有找到相关文章

最新更新