2013-08-23 52 views
0

我可以通过使用p['cover']['source']来访问我的django python shell中的字典。我也可以使用点符号访问模板中的“源”,但是,当我尝试在我的视图中访问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