Как заставить набор запросов быть оцененным так, чтобы исключение могло быть поймано в представлении - PullRequest
0 голосов
/ 25 мая 2018

У меня возникло исключение 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 голосов
/ 25 мая 2018

А как насчет глобальной ловушки исключений?

def exception_hook(exctype, value, trace):
    # some exception handling logic here.
    sys.__excepthook__(exctype, value, trace)
sys.excepthook = exception_hook
0 голосов
/ 25 мая 2018

Вы можете использовать list() для принудительной оценки набора запросов.

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