/
http.py
29 lines (23 loc) · 810 Bytes
/
http.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# -*- coding: utf-8 -*-
from django.shortcuts import redirect
from django.utils.encoding import iri_to_uri
try:
from django.utils.http import url_has_allowed_host_and_scheme
except ImportError:
from django.utils.http import is_safe_url as url_has_allowed_host_and_scheme
def _resolve_lazy_url(url):
if callable(url):
return url()
return url
def safe_redirect(request, key, default_url='', method='GET'):
next = (
getattr(request, method).get(key, None) or
_resolve_lazy_url(default_url)
)
url_is_safe = url_has_allowed_host_and_scheme(
url=next, allowed_hosts=None)
#allowed_hosts=settings.ALLOWED_HOSTS,
#require_https=request.is_secure())
if url_is_safe:
return redirect(iri_to_uri(next))
return redirect('/')