详解Django的 get_list_or_404() 函数:获取列表,如果不存在则返回 404 错误页面

  • Post category:Python

get_list_or_404() 是 Django 中的一个辅助函数,它用于获取 QuerySet 列表,并在获取的结果为空时抛出一个 Http404 异常,以便于我们在开发 Web 应用过程中更好的处理错误情况。

使用方法:get_list_or_404(model, conditions, *args, **kwargs)

其中,model 指定查询的模型,conditions 指定筛选条件,*args 用于处理额外的筛选条件(可以使用任何本身也能用于查询的参数,如 order_byselect_related 等),**kwargs 用于处理额外的筛选条件。

下面通过两个实例来进一步了解 get_list_or_404() 的使用方法和作用:

  1. 实例一

假设我们有一个 Blog 模型,它有个布尔字段 is_published 指定该博客文章是否已经发布,我们想获取所有已发布的文章。我们可以这样使用 get_list_or_404()

from django.shortcuts import get_list_or_404
from myapp.models import Blog

published_blogs = get_list_or_404(Blog, is_published=True)

如果查询结果为空,将会抛出一个 HTTP 404 异常。

  1. 实例二

假设我们有一个模型叫 Person,它有一个外键关联到另一个模型 Department,现在我们想获取所有名字叫做 “Tom”,并且所在部门的名称包含 “HR” 的 Person 对象列表。这时我们可以这样使用 get_list_or_404()

from django.shortcuts import get_list_or_404
from myapp.models import Person

tom_in_hr_department = get_list_or_404(
    Person,
    name="Tom",
    department__name__icontains="HR"
)

在这里我们使用了 department__name__icontains 来筛选名称包含 “HR” 的 Department 对象,然后使用 __Department 和查询条件连接起来。如果查询结果为空,将会抛出一个 HTTP 404 异常。

总之,get_list_or_404() 函数提供了一个方便简洁的方式来获取 QuerySet 列表,并在需要时抛出 404 异常,这对于我们的 Web 开发工作是非常有帮助的。