【问题标题】:Problems Accessing dictionary in Django在 Django 中访问字典的问题
【发布时间】:2013-08-23 22:43:30
【问题描述】:

我可以使用p['cover']['source'] 在我的 django python shell 中正常访问字典。我还可以使用点符号访问模板中的“源”,但是,当我尝试在我的视图中访问 p['cover']['source'] 时,我得到一个 keyError。我可以使用p.get('cover','none') 访问“封面”,但我需要获得p['cover']['source'],但我不知道如何访问它。请帮忙:-)

  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)

【问题讨论】:

  • 您无法访问不存在的内容。找出为什么它没有被设置在它应该在的地方。
  • 但我的困惑是因为它就在那里。例如,如果我像这样访问 p['cover'] 它会失败,但 p.get('cover','none') 有效。另外,如果我可以从模板访问字典,但不能从视图访问。这对我来说没有意义,所以我很难找到它的设置位置
  • 可能不是字典而是类字典对象。
  • 如果它有助于从 Facebook GraphAPI 返回的字典。
  • p.get('cover','none')image的内容是什么?是字典吗?它的键是什么?

标签: python django dictionary


【解决方案1】:

部分用户可能没有封面图片,导致访问词典时出现KeyError。使用 try/except 块来防止错误:

try:
    image = p['cover']['source']
except KeyError:
    pass  # or other alternative for those without cover picture

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 2014-02-08
    • 2012-05-09
    • 1970-01-01
    • 2013-11-13
    • 2018-11-03
    相关资源
    最近更新 更多