2013-08-23 2 views
0

Я могу получить доступ к словарю в моей оболочке python django, используя p['cover']['source']. Я также могу получить доступ к «источнику» в шаблонах с использованием точечной нотации, однако при попытке получить доступ к p['cover']['source'] в моих представлениях я получаю keyError. Мне удалось получить доступ к «обложке», используя p.get('cover','none'), но мне нужно получить p['cover']['source'], и я понятия не имею, как получить к нему доступ. Пожалуйста, помогите :-)Проблемы с доступом к словарю в Django

views.py 
    image_table = [] 
     for n in likes: 
     link = n.facebook_id 
     p = graph.get_object(str(link)) 
     #image = p['cover']['source'] //This returns KeyError 
     #image = p['cover'][0]['source'] //This returns KeyError = 0 
     image = p.get('cover','none')//This only returns the first dictionary 
     image_table.append(image) 
+1

Вы не можете получить доступ к тому, чего там нет. Узнайте, почему он не устанавливается, где бы он ни находился. –

+0

Но мое замешательство связано с тем, что оно есть. Например, если я получаю доступ к p ['cover'], то он не работает, но p.get ('cover', 'none') работает. Также, если я могу получить доступ к словарю из шаблона, но не из представлений. Это не имеет смысла для меня, поэтому я изо всех сил пытаюсь найти, где это установлено – Milkman777

+0

Возможно, это не словарь, а диктофонный объект. –

ответ

0

Некоторые пользователи не могут иметь сопроводительное картину, вызывая KeyError при обращении к словарю. Используйте блок try/except для предотвращения ошибки:

try: 
    image = p['cover']['source'] 
except KeyError: 
    pass # or other alternative for those without cover picture 
Смежные вопросы