我正在尝试编写一些Python代码,以使用户Gitlab配置文件图片/头像在稍后的代码中嵌入“不和谐嵌入”中发送。但是,当我尝试读取Gitlab API返回的json但收到错误“'用户'对象不可下标”时,此json看起来不像Gitlab API返回的其他json。
我尝试使用属性,但是我仍然收到相同的错误,我也尝试仅读取它,但是我仍然收到相同的错误。
import gitlab
import json
# private token or personal token authentication
gl = gitlab.Gitlab('https://git.deploys.io/', private_token='')
project = gl.projects.get(13)
json_data = project.tags.list(order_by='updated', sort='desc')
newest_tagjson = (json_data[0].attributes)
latesttag = newest_tagjson["name"]
name1 = newest_tagjson["commit"]["author_name"]
projectid = newest_tagjson["project_id"]
footer1 = "Venom/Panel"
if name1 == "Edward Brook":
ID = 16
user = gl.users.get(ID)
print(user)
user2 = (user['avatar_url'].attributes)
我应该收到一个干净的json,我可以阅读,但我在打印稿中收到了
<class 'gitlab.v4.objects.User'> => {'id': 16, 'name': 'Edward Brook', 'username': 'Edbtvplays', 'state': 'active', 'avatar_url': 'https://git.deploys.io/uploads/-/system/user/avatar/16/avatar.png', 'web_url': 'https://git.deploys.io/Edbtvplays', 'created_at': '2019-01-29T18:30:53.819Z', 'bio': 'CEO Venom-Hosting LTD \r\n', 'location': 'Leatherhead, United Kingdom', 'public_email': 'ed@venom-hosting.com', 'skype': '', 'linkedin': '', 'twitter': '@Edbtvplays', 'website_url': 'Venom-Hosting.com', 'organization': 'Venom-Hosting LTD'}
我看不懂。
答案 0 :(得分:0)
错误似乎很清楚:调用request
的结果不是Python字典,因此您无法像get_queryset
中那样使用带下标的键。您可以使用Python的点符号来访问属性,如self.request
。
您当然可以将所需的信息提取到Python词典中:
gl.users.get(ID)
然后您可以将其序列化为JSON:
user['avatar_url']
Python user.avatar_url
模块将gitlab API包装在旨在简化某些操作的各种管理器中,但是,如果您的目标是将内容序列化为JSON,则自己直接调用REST API可能会更容易: / p>
>>> user_dict = {k: getattr(user, k) for k in
... ['id', 'name', 'state', 'avatar_url', 'web_url']}
>>> user_dict
{'id': 28841, 'name': 'Lars Kellogg-Stedman', 'state': 'active', 'avatar_url': 'https://secure.gravatar.com/avatar/1c09a8d9e719f9d13b6c99f6bb2637d8?s=80&d=identicon', 'web_url': 'https://gitlab.com/larsks'}