如何过滤OS类别

Posted WeChatID as below

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何过滤OS类别相关的知识,希望对你有一定的参考价值。

ansible_os_family


  1. CentOS
    ---
    - name: Gather facts and filter CentOS hosts
      hosts: os_version
      gather_facts: true
    
      tasks:
        - name: Check CentOS hosts
          assert:
            that:
              - ansible_os_family == \'RedHat\'
            fail_msg: "Non-CentOS host:  inventory_hostname "
            success_msg: "CentOS host:  inventory_hostname "
          changed_when: false
  2. Ubuntu

    ---
    - name: Gather facts and filter Ubuntu hosts
      hosts: os_version
      gather_facts: true
    
      tasks:
        - name: Check Ubuntu hosts
          assert:
            that:
              - ansible_os_family == \'Debian\'
            fail_msg: "Non-Ubuntu host:  inventory_hostname "
            success_msg: "Ubuntu host:  inventory_hostname "
          changed_when: false

ansible_distribution


  1. CentOS
    ---
    - name: Gather facts and filter CentOS hosts
      hosts: os_version
      gather_facts: true
    
      tasks:
        - name: Check CentOS hosts
          assert:
            that:
              - ansible_distribution == \'CentOS\'
            fail_msg: "Non-CentOS host:  inventory_hostname "
            success_msg: "CentOS host:  inventory_hostname "
          changed_when: false
  2. Ubuntu
    ---
    - name: Gather facts and filter Ubuntu hosts
      hosts: os_version
      gather_facts: true
    
      tasks:
        - name: Check Ubuntu hosts
          assert:
            that:
              - ansible_distribution == \'Ubuntu\'
            fail_msg: "Non-Ubuntu host:  inventory_hostname "
            success_msg: "Ubuntu host:  inventory_hostname "
          changed_when: false

     

如何根据类别过滤帖子列表

【中文标题】如何根据类别过滤帖子列表【英文标题】:How to filter a list of posts based on category 【发布时间】:2020-11-14 21:51:42 【问题描述】:

嗨,我对 django 很陌生。我正在构建我的第一个网络应用程序,但遇到了一些障碍。

我有一个显示分页帖子列表的模板。我有一个侧边栏,它还动态填充帖子类别列表:

% for cat in category_count %
<div class="item d-flex justify-content-between">
<a href="#"> cat.categories__title </a>
<span> cat.categories__title__count </span>
</div>
% endfor %

我希望能够单击其中一个类别,然后按类别显示经过过滤的帖子列表。类别是帖子的多对多字段。

class Post(models.Model):
    title = models.CharField(max_length=100)
    overview = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(Author,on_delete=models.CASCADE)
    thumbnail = models.ImageField()
    categories = models.ManyToManyField(Category)
    featured = models.BooleanField()
    content = HTMLField()
    previous_post = models.ForeignKey('self', related_name='previous', on_delete=models.SET_NULL, blank=True, null=True)
    next_post = models.ForeignKey('self', related_name='next', on_delete=models.SET_NULL, blank=True, null=True)

我的想法是为 'category/' 创建一个 url 并显示过滤列表,但我不知道如何设置它,以便我可以从请求中获取用户选择的类别。有什么想法吗?

注意:如果你们中的任何人都遇到过更好的方法来处理这个问题,我完全愿意接受。

提前致谢。

【问题讨论】:

【参考方案1】:

我要做的就是分两部分完成这个动作:

    显示按钮列表,用于向服务器发送有关选择的数据 将过滤后的列表(基于选择)返回到模板

第 1 步

显示项目列表,然后在name 属性中放置不同的选项供 Django 服务器读取。

<form action="" method="post">
  <input type="submit" name="choice_1" value="value1" />
  <input type="submit" name="choice_2" value="value2" />
</form>

第 2 步

您根据用户的选择返回查询集。您应该将其添加到您的视图或您认为适合处理这些数据的任何位置。

if 'choice_1' in request.POST:
    # return the queryset based on choice 1
elif 'choice_2' in request.POST:
    # return the queryset based on choice 2

Reference.

【讨论】:

【参考方案2】:

您应该使用url 模板标签以及cat.id

% for cat in category_count %
<div class="item d-flex justify-content-between">
<a href="% url 'post_view' cat.id %"> cat.categories__title </a>
<span> cat.categories__title__count </span>
</div>
% endfor %

现在在您的urls.py 中添加一个名为 post_view 的视图:

urlpatterns = [
    path('post', post_view, name='post_view'),
    ...
]

最后,在您的views.py 中,您可以将category_id 作为函数参数访问:

def post_view(request, category_id):
    posts = Post.objects.filter(categories__id=category_id)

    ...

【讨论】:

您的意思是输入“% url 'post_view' cat.id %,还是将 url/route 称为“category_view”? @Stephen 抱歉,这是一个错字。它应该是post_view

以上是关于如何过滤OS类别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 octobercms 中过滤具有多个类别的博客文章?

如何使magento过滤器像类别一样工作

如何根据类别过滤帖子列表

如何在点击时同时过滤和处理项目

如何在laravel中按类别过滤帖子?

如何获取在 Wordpress 中按类别过滤的自定义帖子类型的永久链接?