Skip to content

Instantly share code, notes, and snippets.

@kk6
Created September 13, 2012 13:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kk6/3714141 to your computer and use it in GitHub Desktop.
Save kk6/3714141 to your computer and use it in GitHub Desktop.
Django's session required decorator
#-*- coding:utf-8 -*-
from functools import wraps
from django.contrib import messages
from django.shortcuts import redirect
def session_required(session_key, fail_redirect_to):
def _session_required(view_func):
@wraps(view_func)
def __session_required(request, *args, **kwargs):
try:
session = request.session.get(session_key)
if session is None:
raise ValueError('Cannot use None at session value')
except KeyError as e:
messages.error(request, 'session key not found')
return redirect(fail_redirect_to)
except ValueError as e:
messages.error(request, e.message)
return redirect(fail_redirect_to)
else:
return view_func(request, *args, **kwargs)
return __session_required
return _session_required
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment