Django Исключение - PullRequest
       0

Django Исключение

0 голосов
/ 07 апреля 2020

У меня есть вопрос. Я работаю над веб-приложением и включил Google API . Все отлично работает, и теперь я хочу добавить кое-что для хороших сообщений для пользователей.

Проблема сейчас в том, что я построил try - except с запросом внутри:

try:
   results = service.users().list(customer='my_customer', maxResults=10,
                            orderBy='email').execute()  
   response = HttpResponse.status_code
except Exception:
   return "error" 

В этом случае ответ 200, это хорошо.

Но когда я делаю неверный запрос вроде:

try:
   results = service.users().list(customer='my_customer', maxResults=10,
                            orderBy='wdadwadwa').execute()  
   response = HttpResponse.status_code
except Exception:
   return "error" #I want to return the error code here

или я использую неправильную область видимости, я всегда получаю код 200. На самом деле это правильно, потому что у нас есть блок try-except. Однако мне нужен оригинальный код ошибки, такой как 404, 403, чтобы возвращать подробные сообщения пользователям. например, 403 - better contact the admin.

Как получить исходный HTTP-ответ об ошибке, поскольку HttpRespone.status_code в этом случае не работает?

Есть идеи?

1 Ответ

1 голос
/ 07 апреля 2020

Хорошо, я исправил это сейчас. Поэтому я нашел HTTPError и попытался реализовать это. Ничего не работает Через некоторое время я обнаружил, что Google имеет свой собственный HttpError. Так что, ребята, когда вы пытаетесь работать с try-exc и google api, используйте:

from googleapiclient.errors import HttpError
from django.http import HttpResponse

и теперь:

try: 
   results = service.users().list(customer='my_customer', maxResults=10,
                            orderBy='email').execute()  
   success = HttpResponse.status_code
except HttpError as err:
   return err.resp.status 
else:
  return success

Теперь вы можете отловить несколько вещей, таких как неверный запрос или нет разрешения et c. В случае успеха вы можете вернуть успех, который в этом случае 200 для всего хорошо. После этого вы можете дать хороший отзыв своим пользователям х)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...