在 Django 中自定义模板标签以过滤博客中的 featured_posts
Customize template tags in Django to filter featured_posts in a blog
我从中得到了提示post
我已经创建了模板标签,但我不确定如何在我的 html 中使用它。我有一个 home.html,我想在其中显示三个特色 post。我正在寻找类似 {% for post in featured_post %} 的内容,然后显示 post 详细信息。
此外,我是否需要像上面 post 那样创建一个 featured_posts.html,因为我不想为特色 post 添加任何额外的页面。除了其他内容之外,我只想让他们在我的主页上添加内容。
我想做的是创建一个模板标签,如下所示
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 模型。我的目录结构有点像这样:-
我有一个名为 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
home.html
{% load blog_tags %}
{% featured_posts %}
调用你的标签。就是这样。
或
{% featured_posts count=15 %}
注意,这里的 featured_posts
不是来自上下文的 post 列表(在 for
循环中迭代)而是函数名称:def featured_posts(count=3)
。它们在您的代码中具有相同的名称,这可能让您有些困惑。
我从中得到了提示post
我已经创建了模板标签,但我不确定如何在我的 html 中使用它。我有一个 home.html,我想在其中显示三个特色 post。我正在寻找类似 {% for post in featured_post %} 的内容,然后显示 post 详细信息。
此外,我是否需要像上面 post 那样创建一个 featured_posts.html,因为我不想为特色 post 添加任何额外的页面。除了其他内容之外,我只想让他们在我的主页上添加内容。
我想做的是创建一个模板标签,如下所示
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 模型。我的目录结构有点像这样:- 我有一个名为 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
home.html
{% load blog_tags %}
{% featured_posts %}
调用你的标签。就是这样。
或
{% featured_posts count=15 %}
注意,这里的 featured_posts
不是来自上下文的 post 列表(在 for
循环中迭代)而是函数名称:def featured_posts(count=3)
。它们在您的代码中具有相同的名称,这可能让您有些困惑。