在视图中从 request.session 访问字典值

accessing dict values from request.session in views

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

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

我正在设置以下会话 variable/dict:

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 和数量的值?

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

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