如何强制对queryset进行求值,以便可以在视图中捕获异常

时间:2018-05-25 12:33:02

标签: python django python-3.x django-views

我在视图渲染过程中抛出了OperationalError异常。

所以我试着在views.py

中进行渲染之前抓住它
try:
    dossiersdb = Person.objects.using('dbn').all()
    print(dossiersdb)
except OperationalError as exp :
    logger.warning("Got %s", exp) 
    return HttpResponse('<h1>OperationalError</h1>')

但我需要添加print(dossiersdb),因为没有它,这里没有例外,但在index.html

捕获此异常的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用list()强制对查询集进行评估。

try:
  dossiersdb = list(Person.objects.using('dbn').all())
except OperationalError as exp :
  logger.warning("Got %s", exp) 
  return HttpResponse('<h1>OperationalError</h1>')

答案 1 :(得分:0)

全局异常挂钩怎么样?

def exception_hook(exctype, value, trace):
    # some exception handling logic here.
    sys.__excepthook__(exctype, value, trace)
sys.excepthook = exception_hook