get_object_or_404

用特定查询条件获取某个对象,成功则返回该对象,否则引发一个 Http404。

get_object_or_404(klass, *args, **kwargs)

参数:

  • klass
    接受一个 Model 类,Manager 或 QuerySet 实例,表示你要对该对象进行查询。

  • **kwargs
    查询条件,格式需要被 get() 和 filter() 接受。

例子:

from django.shortcuts import render
from django.shortcuts import get_object_or_404
from myApp.models import Book 

def my_view(request):
    context = {}
    # 查询主键为1的书,找不到返回http404
    books = get_object_or_404(Book, pk=1)
    context['books'] = books
    return render(request, 'my_view.html', context)

除了传递一个 Model,还可以传递一个 QuerySet 实例:

queryset = Book.objects.filter(title__startswith='红')
books = get_object_or_404(queryset, pk=1)

以上写法等价于:

get_object_or_404(Book, title__startswith='红', pk=1)

你可能感兴趣的:(get_object_or_404)