django框架:get_object_or_404得到对象或者返回404

日期:2018-06-30 22:51:45 章节:  django开发流程及原理

django框架:get_object_or_404得到对象或者返回404。

其实这个方法一般不会使用,因为就算找不到数据,也不会返回404。顶多显示暂无数据。

  • get_object_or_404(klass, args, *kwargs)

  • 通过模型管理器或查询集调用get()方法,如果没找到对象,不引发模型的DoesNotExist异常,而是引发Http404异常

  • klass:获取对象的模型类、Manager对象或QuerySet对象

  • **kwargs:查询的参数,格式应该可以被get()和filter()接受

  • 如果找到多个对象将引发MultipleObjectsReturned异常

使用此方法需要将settings.py中DEBUG发为false。否则永远不会返回到404页面,会显示错误堆栈详细信息。

from django.shortcuts import *
def detail(request, id):
   try:
       book = get_object_or_404(BookInfo, pk=id)
   except BookInfo.MultipleObjectsReturned:
       book = None
   return render(request, 'booktest/detail.html', {'book': book})