Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中自定义模板标记,以过滤博客中的特色文章_Python_Django_Python 3.x_Django Templates_Django Template Filters - Fatal编程技术网

Python 在Django中自定义模板标记,以过滤博客中的特色文章

Python 在Django中自定义模板标记,以过滤博客中的特色文章,python,django,python-3.x,django-templates,django-template-filters,Python,Django,Python 3.x,Django Templates,Django Template Filters,我从这篇文章中得到了一个暗示 我已经创建了模板标记,但我不知道如何在html中使用它。我有一个home.html,我想在这里显示三篇特色文章。我正在寻找类似{u post%}的内容,然后显示帖子的详细信息 另外,我是否需要像上面的文章一样创建一个featured_posts.html,因为我不想为这个featured post创建任何额外的页面。我只是想让他们在我的主页上添加其他东西 我要做的是创建了一个模板标记,如下所示 from django import template regis

我从这篇文章中得到了一个暗示

我已经创建了模板标记,但我不知道如何在html中使用它。我有一个home.html,我想在这里显示三篇特色文章。我正在寻找类似{u post%}的内容,然后显示帖子的详细信息

另外,我是否需要像上面的文章一样创建一个featured_posts.html,因为我不想为这个featured 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

我不能做相对的导入

然后创建了一个新页面,其特色是_posts.html,如下所示:

<ul>
    {% for post in featured_posts %}
        <li>{{ post.title }} </li>
    {% endfor %}
</ul>
home.html 给你的标签打电话。就这样


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

这就是inclusion标记的实现方式。正如给定的链接所描述的:函数、模板,然后在父/主模板中调用您的函数。{%for%}循环将在您的辅助模板中。我是新手,我刚刚编辑了我的问题,关于我如何尝试这样做。你能告诉我怎么做吗?你在标签功能上的错误与链接中的OP相同。请看下面的答案特色帖子。html`很好。哦,是的。。。我已经改正了。我在我的home.html
{%load blog_tags%}{%for post in featured_posts%}{{post.title}}{%endfor%}
仍然没有在我的home.html中得到任何东西。我提到的一个可能的原因是我没有在标记中包含model类。(阅读上面我在做这件事时面临的问题)@IvanStarostin
from posts.models import Post
{% load blog_tags %} 
{% featured_posts %}
{% featured_posts count=15 %}