Как извлечь конкретные данные в результаты, полученные с помощью библиотеки Python Requests - PullRequest
0 голосов
/ 21 сентября 2018

Пожалуйста, посмотрите на код ниже:

@login_required
def dashboard(request):
    code = request.GET.get('code', '')
    payload = {
        "client_id" : settings.GITHUB_CLIENT_ID,
        "client_secret" : settings.GITHUB_CLIENT_SECRET,
        "code" : code,
        "state" : settings.STATE,
    }
    response = requests.post('https://github.com/login/oauth/access_token', params=payload)
    # final_response = requests.get('https://api.github.com/user', auth=GitHubTokenAuth(access_token))
    return HttpResponse(response)
    # authenticated_user = final_response.json()
    # return render(request, 'core/dashboard.html', {'authenticated_user':authenticated_user})

Переменная response возвращает значения, подобные:

access_token=eiwfbvdsvefieebrferferwfreferfersfwrb&scope=a%20list%20of%20scopes&token_type=bearer

Как получить доступ к значению access_token так что я могу использовать, как видно из значения закомментированной final_response переменной?Спасибо в ожидании!

1 Ответ

0 голосов
/ 21 сентября 2018

Вы можете использовать parse_qs метод urllib:

>>> from urllib.parse import parse_qs
>>> parse_qs(response.text)
{'access_token': ['eiwfbvdsvefieebrferferwfreferfersfwrb'], 'scope': ['a list of scopes'], 'token_type': ['bearer']}

Обратите внимание, что вы получите list для каждой клавиши.Чтобы получить доступ к первому элементу, используйте следующий синтаксис:

>>> result = parse_qs(response.text)
>>> result['access_token'][0]
'eiwfbvdsvefieebrferferwfreferfersfwrb'
...