在项目中使用的 Django Alter 命令行过滤器

Django Alter commandline filter to use in project

所以自从我一直在尝试学习 django 以来,有一件事最让我感到困惑,那就是将在 django shell 中工作的东西转换成在 [= 中工作的格式views.py 的 15=]。所以这是文档中的示例:

>>> Entry.objects.all().filter(pub_date__year=2006)

所以我可以使用 shell,到处都有大量示例,但似乎从未涵盖的是如果您想过滤其他年份,如何将其放入您的代码中。有人可以解释这一点或向我指出解释这一点的文档,因为我没有在 django 文档中找到它。

有几种方法可以做到这一点,但出于开始和学习目的,您的视图应该接受年份参数:

def my_view(request, year):
    entries = Entry.objects.filter(pub_date__year=year)
    context = {
        "entries": entries
    }
    return TemplateResponse(request, 'my_template.html', context)

你说的那一行是用来查询数据库然后过滤东西的。此行主要用于视图或序列化程序,因为您希望将条目传递给模板或作为 JSON 到 API 响应。

在视图中使用它:

    def view(request):
        entries = Entry.objects.filter(pub_date__year=year)
        return render(request, 'index.html', {'entries': entries})

这里上面代码中的对象{'entries': entries}是context对象

然后,您可以在 Django 模板中使用相同的东西,例如 index.html

   {% for entry in entries %}
       <li> {{ entry.id }} </li>
   {% endfor %}