【问题标题】:accessing dict values from request.session in views从视图中的 request.session 访问 dict 值
【发布时间】:2015-01-29 07:48:56
【问题描述】:

我正在尝试在视图中获取会话变量,但运气不佳。 我收到的错误是:

列表索引必须是整数,而不是 str

我设置了以下会话变量/字典:

u'bookingContents' :    
    {
    u'bookingID': 40, 
    u'bookingOptionContents': {
        u'activityID': 1, 
        u'activityName': u'Echo Park legging races', 
        u'activityShortDescription': u'YOLO umami occupy, Echo Park leggings meh Kickstarter cardigan. ', 
        u'activityThumbnail': u'/media/activity/1/thumb_test.jpg', 
        u'optionCost': 20, 
        u'optionDayOfWeek': u'Tuesday', 
        u'optionEndTime': u'12:00', 
        u'optionStartDate': u'19/01/2015', 
        u'optionStartTime': u'06:00', 
        u'quantity': 9}, 
    u'bookingOptionID': 1}

我正在尝试通过标签访问 bookingID 和 bookingOptionsContents.quantity 值(最好)。

我的views代码如下(对于第一个bookingID值):

if int(request.session.get('bookingContents.bookingID', False)) == somevalue:

我也试过了:

if int(request.session.get('[bookingContents']['bookingID'], False)) == somevalue:

但我似乎无法理解这些值。

事情在模板中工作,我可以通过以下方式成功检索值:

{{request.session.bookingContents.bookingOptionContents.quantity}}
{{request.session.bookingContents.bookingID}}

如何在视图中获取 bookingID 和数量的值?

【问题讨论】:

    标签: python django django-views django-sessions


    【解决方案1】:

    您不能在视图中使用点表示法。我会在这里遵循EAFP 风格:

    try:
        value = int(request.session['bookingContents']['bookingID'])
    except (KeyError, ValueError) as e:
        value = None
    

    【讨论】:

      猜你喜欢
      • 2010-11-08
      • 2014-06-23
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-18
      相关资源
      最近更新 更多