Django视图的后备依赖于会话变量

时间:2013-01-04 17:48:04

标签: django django-views django-sessions

我的观点如下:

def CineByCiudad(request):
    city = request.session["ciudad"]
    cines = Cine.objects.filter(ciudad=city)
    context = {'cines': cines}
    return render_to_response('cine-ciudad.html', context, context_instance=RequestContext(request))

现在,我正在使用会话变量“ciudad”来过滤我的查询。 在我网站的主页上,我让用户设置他们的“ciudad”,一旦设置我将其重定向到另一个页面,他们就可以开始根据他们的城市(“ciudad”)查看内容。

我的主页会检查会话是否包含项目:

def index(request):
    #Checks to see if the session has items, in particular if a city has been set
    if not request.session.items():
        return render_to_response('index.html', context_instance=RequestContext(request))
    else:
        return redirect(Cartelera)

现在让我们假设用户出于某种原因删除了他的cookie,并且在网站上他访问了与主页不同的网址(比如www.site.com/cartelera),然后他会收到错误,因为会话变量“ciudad”没有设定。

有没有办法为此会话变量创建默认值,以防它尚未设置? 或者处理这个问题的好习惯是什么?

1 个答案:

答案 0 :(得分:1)

如果未设置值,请在会话中使用dict.get方法检索默认值,如下所示:

city = request.session.get('ciudad', 'default value')