【问题标题】:AttributeError: 'dict' object has no attribute 'decode'AttributeError:“dict”对象没有属性“decode”
【发布时间】:2018-12-03 11:27:00
【问题描述】:

即使 API 链接断开,我也尝试运行服务,但我不断收到以下错误:

AttributeError: 'dict' object has no attribute 'decode'.

我该如何解决这个问题?谢谢

 *@app.route('/test_api')
    def test_api():
        ipno = "192.168.0.120"
        port = "8060"

        url_time = 'https://{}:{}/time/'.format(ipno, port)
        url_member = 'https://{}:{}/member/'.format(ipno, port)
        url_state = 'https://{}:{}/state/'.format(ipno, port)

        try:
            r_time = _session.get(url_time).content

            r_member = _session.get(url_member).content

            r_state = _session.get(url_state).content
        except requests.exceptions.ConnectionError:
            r_uptime = {
                        "uptime": "OFF"
                        }.decode(utf-8)
            r_member ={
                        "groupCount": "OFF",
                      }.decode(utf-8)
            r_state={   "state": "OFF"
                    }.decode(utf-8)


        return render_template('test_api.html', time = json.loads(r_time), member=json.loads(r_member), state=json.loads(r_state))*

【问题讨论】:

  • decode 是一种字符串方法,仅适用于字符串,不适用于字典。虽然这里还有很多其他问题..
  • 您可能想在应用解码之前对您的字典进行 jsonify,但这完全取决于您要做什么。在我看来,您应该删除解码部分。

标签: python api flask


【解决方案1】:

您的代码似乎有很多错误。

首先,您对同一个变量使用不同的名称:r_time 和 r_uptime

其次,您使用不同类型的 r_xxx 值:try 和 dict 中的字符串 except 子句。我认为,以下代码将更好地满足您的需求:

import json.decoder
...
try:
    r_uptime = json.loads(_session.get(url_time).content)
    r_member = json.loads(_session.get(url_member).content)
    r_state = json.loads(_session.get(url_state).content)
except (json.decoder.JSONDecodeError, requests.exceptions.ConnectionError) as ex:
    r_uptime = {"uptime": "OFF"}
    r_member = {"groupCount": "OFF"}
    r_state = {"state": "OFF"}
return render_template('test_api.html', time = r_uptime, member=r_member, state=r_state)

【讨论】:

    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 2018-12-01
    • 2014-05-26
    • 2018-09-02
    • 2021-01-30
    • 2020-09-11
    • 2021-06-07
    • 2021-12-28
    相关资源
    最近更新 更多