详解Django的 get_object_or_404() 函数:获取模型对象或返回 404 错误

  • Post category:Python

get_object_or_404()是Django框架中的一个快捷方式函数,用来获取某个模型中的对象,如果该对象不存在则返回HTTP 404 Not Found错误。

作用

该函数主要用来避免在模板文件中进行大量的异常处理,对于处理 HTTP 404 错误非常有帮助。此外,该函数还可以让你快速地从数据库中获取一个对象。

使用方法

在使用该函数时需要传递两个参数:模型类和关键字参数,这些参数与模型中的字段名相对应。如果找到该对象,则返回该对象,否则返回一个HTTP 404 错误页面。

以下是该函数的代码:

from django.shortcuts import get_object_or_404
object = get_object_or_404(SomeModel, field_name=value)
  • SomeModel: 模型类;
  • field_name: 查询字段;
  • value: 查询值;

示例1

假设你有一个博客网站,你想注册一个新的博客作者。你可以这样实现:

from django.shortcuts import render, get_object_or_404
from blog.models import Author

def author_detail(request, author_id):
    author = get_object_or_404(Author, id=author_id)
    context = {'author': author}
    return render(request, 'author_detail.html', context)

这个例子中,如果通过给定的author_id未找到对应的作者,则返回HTTP 404页面。

示例2

假设你有一个电商网站,在“我的订单”页面中用户可以查看他们的订单。你可以使用该函数获取特定id的订单。

“`python
from django.shortcuts import render, get_object_or_404
from orders.models import Order

def order_detail(request, order_id):
order = get_object_or_404(Order, id=order_id)
context = {‘order’: order}
return render(request, ‘order_detail.html’, context)
“`

这个例子中,如果通过给定的order_id未找到对应的订单,则返回HTTP 404页面。

总结

get_object_or_404()可以让你从数据库中快速获取一个对象,并同时避免大量的异常处理。在使用该函数时,你需要传递两个参数:模型类和关键字参数。最后,当通过给定的关键字参数无法找到对象时,该函数将返回HTTP 404页面。