Django如何将模板限制为只有两个帖子

Posted

技术标签:

【中文标题】Django如何将模板限制为只有两个帖子【英文标题】:Django how to limit template to only two posts 【发布时间】:2021-04-03 15:43:15 【问题描述】:

我只想显示模板上添加的最后两个帖子(最好是今天发布的帖子),我已经看到这样做了,但不是基于类的视图。

from .forms import PostForm
from .models import Post
from django.views.generic import ListView
from django.views import generic
from django.urls import reverse_lazy


class homeView(ListView):
    model = Post
    template_name = 'MAG-page.html'

MAG-page.html

% for post in object_list %
      <div class="col-lg-6 col-md-12">


        <div>
        <!--Image-->
        <div class="view overlay rounded z-depth-1-half mb-3">
          <img src="post.Thumbnail.url" class="img-fluid" >
          <a>
            <div class="mask rgba-white-slight"></div>
          </a>
        </div>

        <!--Excerpt-->
        <div class="news-data">
          <a href="" class="light-blue-text">
            <h6>
              <i class="fas fa-plane"></i>
              <strong> post.author</strong>
            </h6>
          </a>
          <p>
            <strong>
              <i class="far fa-clock"></i> post.Date</strong>
          </p>
        </div>
        <h3>
          <a>
            <strong>post.title|safe</strong>
          </a>
        </h3>
        <p> post.Text|safe</p>
        </div>
% endfor %

【问题讨论】:

这可能与以下问题 ***.com/questions/3907628/… 重复。答案是添加slicedjango模板标签。 这能回答你的问题吗? How do you limit list objects template side, rather than view side 【参考方案1】:

只需添加一个查询集并将其限制为 2 个对象。

class YourView(ListView):
    queryset = Post.objects.order_by('-date')[:2] # replace 'date' if it does not match your case
    # other attributes/methods

【讨论】:

以上是关于Django如何将模板限制为只有两个帖子的主要内容,如果未能解决你的问题,请参考以下文章

Django 将页面限制为特定用户

与常规 Django 模板相比,NDjango 模板都有哪些限制?

在 Wordpress 中,如何将帖子限制为仅一个类别复选框?

如何将 django 端点限制为本地网络?

在 Django 中限制每天的查看次数

使用 Django 模板过滤器限制字符数