Python Django-从侧栏中排除当前立柱

Python Django-从侧栏中排除当前立柱,python,django,Python,Django,我正在玩Django,但我的模板有问题。在我的文章详细信息中,包括模板标记中的最近文章侧栏,但如果当前文章实际上是最新的,我想将其排除在外。我最初的希望是在blog_标签中使用.exclude(id__post_detail=post),但我认为我可能遗漏了一个重要的概念,我是否需要请求post_detail返回其响应,然后我就可以这样做?或者在视图中定义查询,然后将其调用到blog_标记 非常感谢 1.blog_tags.py from django import template regi

我正在玩Django,但我的模板有问题。在我的文章详细信息中,包括模板标记中的最近文章侧栏,但如果当前文章实际上是最新的,我想将其排除在外。我最初的希望是在blog_标签中使用.exclude(id__post_detail=post),但我认为我可能遗漏了一个重要的概念,我是否需要请求post_detail返回其响应,然后我就可以这样做?或者在视图中定义查询,然后将其调用到blog_标记

非常感谢

1.blog_tags.py

from django import template

register = template.Library()

from django.db import models
from django.utils import timezone
from ..models import Post

@register.inclusion_tag('blog/sidebar.html')
def sidebar_latest(request, count=5):     
    latest_posts= Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')[:count]
    return {'latest_posts': latest_posts}
  • 观点

    def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})
    
  • 邮递详情

    {% extends 'blog/base.html' %}
    {% load blog_tags %}
    {% block content %}
    <div class="col-sm-12 col-md-9">
    <div class="post">
    <h1>{{ post.title }}</h1>
    {% if post.published_date %}
    <div class="date">
    {{ post.published_date }}
    </div>
    {% endif %}
    <p>{{ post.text|linebreaksbr }}</p>
    </div>
    </div>
    <div class="col-sm-12 col-md-3">
    {% sidebar_latest 3 %}
    </div>
    {% endblock %}
    
    {%extends'blog/base.html%}
    {%load blog_tags%}
    {%block content%}
    {{post.title}}
    {%if post.published_date%}
    {{post.published_date}
    {%endif%}
    {{post.text | linebreaksbr}}

    {%sidebar_最新3%} {%endblock%}

  • def sidebar_latest(request,count=5,**kwargs):尝试在函数中打印kwargs,并在转到详细信息页面时检查当前帖子的帖子id是否显示。这让我开始了一段有趣的阅读路线,但不幸的是没有回答我的问题。我还没有说这将是答案,我只是问你是否得到了当前帖子的id?如果你得到了它,那么过滤就可以完成了。你把kwargs放在模板过滤功能中了吗??然后在函数的第一行打印(kwargs)并转到post详细信息页面,检查终端中为kwargs打印的内容,并首先输出她的post使函数像ef侧边栏一样最新(请求,计数=5,**kwargs)def侧边栏最新(请求,计数=5,**kwargs):并尝试在函数内打印kwargs,当你进入详细信息页面时,请检查当前帖子的帖子id是否显示。该页面引导我进行有趣的阅读,但不幸的是没有回答我的问题。我没有说这将是答案,我只是问你是否获得当前帖子的id?如果你得到了它,那么过滤就可以完成了。你把kwargs放在模板过滤功能中了吗??然后在函数的第一行打印(kwargs)并转到post详细信息页面,检查终端中为kwargs打印的内容,并在输出她的post\e第一次将函数设置为最新的ef侧边栏(请求,计数=5,**kwargs)