import urlparse from django.conf import settings from django.http import HttpResponseRedirect def ssl_required(view_func): def _checkssl(request, *args, **kwargs): if not settings.DEBUG and not request.is_secure(): if hasattr(settings, 'SSL_DOMAIN'): url_str = urlparse.urljoin( settings.SSL_DOMAIN, request.get_full_path() ) else: url_str = request.build_absolute_uri() url_str = url_str.replace('http://', 'https://') return HttpResponseRedirect(url_str) return view_func(request, *args, **kwargs) return _checkssl