为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

三国纷争 2021-05-13 18:16:33
我从这篇文章中获得了一些提示,即 在Django中自定义标签以过滤Post模型中的帖子我已经创建了模板标签,但不确定如何在html中使用它。我有一个home.html,我想在其中显示三个特色文章。我正在寻找类似{%for features_post%}中的帖子,然后显示帖子的详细信息。另外,我是否一定需要像上面的帖子中那样创建featured_posts.html,因为我不想为该帖子添加任何额外的页面。我只希望他们在其他内容上添加我的主页。我想做的是我已经创建了一个模板标签,如下from django import templateregister = 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模型。我的目录结构有点像这样:-我有一个名为posts的应用程序。在其中,我具有models.py和templatetags模块,在模板标签中,我具有blog_tags.py我无法进行相对导入。然后创建新页面featured_posts.html,如下所示:-<ul>    {% for post in featured_posts %}        <li>{{ post.title }} </li>    {% endfor %}</ul>现在,我想在home.html中使用它。我该如何使用?编辑:-如上所述,我可以按以下方式加载模型:-from posts.models import Post
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

home.html

{% load blog_tags %}
 {% featured_posts %}

呼叫您的标签。就是这样。

或者

{% featured_posts count=15 %}

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


查看完整回答
反对 回复 2021-05-25
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号