2017-01-14 3 views
-1

Я знаю, что это вообще плохая идея, но я думаю, что для моей задачи это должно быть хорошо. Мне приходится иметь дело с несколькими страницами Facebook, каждый из которых имеет свой токен доступа. В зависимости от выбора пользователя я вызываю график Facebook, чтобы получить представление о конкретной странице.Преобразование строки python в переменную

Мой код:

#User's input 
date_since = request.form['since'] 
date_until = request.form['until']  
page_name = request.form['page_name'] 
#Call Facebook Graph 
r = requests.get('https://graph.facebook.com/v2.8/'+page_name+'/insights/metric/day?since='+since+'&until='+until+'&access_token='+token+'') 

хранить все жетоны в отдельном файле, чтобы держать их в тайне:

token_pagename1 = 'TOKEN1' 
token_pagename2 = 'TOKEN2' 

То, что я хочу сделать, это пройти token_pagename1 в мой requests.get, если пользователь выбирает «pagename1» из предустановленного списка имен.

Я построить новую строку на основе входных данных пользователя:

page_token = 'token' + '_' + page_name 

Но теперь мне нужно преобразовать эту строку в имени переменной token. Я попытался использовать vars()[page_token] вместо token, но получаю KeyError от requests.get.

Может ли кто-нибудь предложить элегантное решение моей проблемы? Благодаря!

+0

Так почему бы не просто использовать словарь? 'tokens = {'pagename1': 'TOKEN1', # ...}'? Тогда вам нужно только «tokens [pagename]», и все готово. –

+0

Спасибо! Сейчас все работает отлично. – aviss

ответ

1

Преобразование список имен лексем:

token_pagename1 
token_pagename2 

к словарю:

tokens = {} 
tokens['pagename1'] 
tokens['pagename2'] 

Тогда легко найти маркер, который вы ищете:

tokens[page_requested] 
0

Создать словарь

tokens = { 
    'pagename1': 'TOKEN1' 
    'pagename2': 'TOKEN2' 
} 

Теперь вы можете получить доступ к странице с помощью маркера

tokens['pagename'] 
Смежные вопросы