从视图中的request.session访问dict值

时间:2015-01-28 23:41:58

标签: python django django-views django-sessions

我试图在视图中获取会话变量,但我没有太多运气。 我收到的错误是:

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

我设置了以下会话变量/ 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值。

我的观看代码如下(对于第一个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和数量的值?

1 个答案:

答案 0 :(得分:0)

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

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