首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPError处理Python3防火墙数据库

HTTPError处理Python3防火墙数据库
EN

Stack Overflow用户
提问于 2017-05-01 19:46:22
回答 1查看 1.3K关注 0票数 1

当我进行授权调用Firebase时:

代码语言:javascript
复制
email = request.POST['email']
password = request.POST['password']
config = {
    "apiKey": "",
    "authDomain": "",
    "databaseURL": "",
    "storageBucket": ""
}
firebase = pyrebase.initialize_app(config)
auth = firebase.auth()
try:
    user = auth.create_user_with_email_and_password(email, password)
    user = auth.refresh(user['refreshToken'])
    request.session['user_uuid'] = user
    if user != "":
        print("You're logged in.")
        return redirect('')
    else:
        print("")

except requests.exceptions.HTTPError as e:
    print(e)

我收到以下答复:

代码语言:javascript
复制
"[Errno 400 Client Error: Bad Request for url: 
https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?
key=%20AIzaSyCm0XR9oECpQOBTp_iouf3RJTD-Nq0fuXg] {
"error": {
  "errors": [
{
  "domain": "global",
  "reason": "invalid",
  "message": "WEAK_PASSWORD : Password should be at least 6 characters"
 }
],
"code": 400,
"message": "WEAK_PASSWORD : Password should be at least 6 characters"
}
}"

我正在尝试解析来自响应的消息和代码,但是我始终得到一个可订阅的错误。我使用以下代码来解析响应:

代码语言:javascript
复制
data = e[-1]
data = (json.dumps(json.loads(data), sort_keys = True, indent = 4))
data = json.loads(data)
error = data['error']
error_message = error['message']
print(error_message)
context_dict = {
    'message': error_message
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-02 19:19:10

pyrebase引发更新的 exception;重新包装原始异常。

您可以得到该异常用.args属性包装的两个值。它是一个带有原始异常的元组,request_object.text值作为第二个。它是要解析的第二个值,,您可以使用原始异常获取响应对象,并使用.json()让请求库进行解析。

代码语言:javascript
复制
except requests.exceptions.HTTPError as e:
    error_json = e.args[1]
    error = json.loads(error_json)['error']

代码语言:javascript
复制
except requests.exceptions.HTTPError as e:
    response = e.args[0].response
    error = response.json()['error']

老实说,我不太清楚项目为什么要这样做;原始异常已经包含了它们绑定的信息;例如,使用original_exception.response.text不是重新包装异常,而是生成相同的文本值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43725448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档