import urllib from django.conf import settings from django.contrib.auth import REDIRECT_FIELD_NAME from django.http import HttpResponseRedirect def allow_anonymous(view_func): view_func.allow_anonymous = True return view_func class RequireLogin: def process_view(self, request, view_func, view_args, view_kwargs): if request.path != settings.LOGIN_URL and \ not request.user.is_authenticated() and \ not getattr(view_func, 'allow_anonymous', False): url = '%s?%s=%s' % (settings.LOGIN_URL, REDIRECT_FIELD_NAME, \ urllib.quote(request.get_full_path())) return HttpResponseRedirect(url)