1

我有一个看起来像这样的视图:

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,并且在他访问的网站上,他访问了一个与主页不同的 url(例如 www.site.com/cartelera),然后他会收到一个错误,因为会话变量“ciudad”没有设置.

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

4

1 回答 1

1

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

city = request.session.get('ciudad', 'default value')
于 2013-01-04T17:50:24.297 回答