Получение ошибки Объект "BadRequestException" не имеет атрибута "get"

72
8

Я новичок в python и django. Попытка настроить django на работу с Dropbox, но продолжать получать ошибку. Объект "BadRequestException" не имеет атрибута "get". Вот мой код.

def get_dropbox_auth_flow(web_app_session):
APP_KEY= '****'
APP_SECRET = '****'
redirect_uri = "http://localhost:8000/dropbox"
return DropboxOAuth2Flow(APP_KEY, APP_SECRET, redirect_uri, web_app_session, "dropbox-auth-csrf-token")

# URL handler for /dropbox-auth-start
def dropbox_auth_start(request):
authorize_url = get_dropbox_auth_flow(request.session).start()
return HttpResponseRedirect(authorize_url)

# URL handler for /dropbox-auth-finish
def dropbox_auth_finish(request):
try:
access_token, user_id, url_state = get_dropbox_auth_flow(request.session).finish(request.GET)
# oauth_result = get_dropbox_auth_flow(request.session).finish(request.query_params)
except oauth.BadRequestException as e:
return e
except oauth.BadStateException as e:
# Start the auth flow again.
return HttpResponseRedirect("http://localhost:8000/dropbox_auth_start")
except oauth.CsrfException as e:
return HttpResponseForbidden()
except oauth.NotApprovedException as e:
raise e
except oauth.ProviderException as e:
raise e

Я следую документации здесь

Добавление трассировки здесь

спросил(а) 2017-12-29T04:41:00+03:00 2 года, 11 месяцев назад
1
Решение
100

Для всех других исключений вы raise e, но для BadRequestException вы возвращаете его - следовательно, ошибка.

Обратите внимание, что все это очень странно. Нет смысла перехватывать исключения только для повторного рейза. Вы должны поймать только те, с которыми вы действительно хотите иметь дело, т.е. BadStateException и CsrfException; вы должны полностью удалить другие блоки и позволить им быть пойманными вверх по течению.

ответил(а) 2017-12-29T13:51:00+03:00 2 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема