django-protocolify è un tag modello per Django che permette al protocollo / schema usato in collegamenti all'interno di un blocco di codice template da modificare.
Un caso d'uso per questo è quando una sezione del proprio sito Web utilizza HTTPS (ad esempio una pagina di pagamento) e si desidera che l'utente per tornare tramite HTTP se lasciano il pagina. Tipicamente userete il {% url%} tag modello per generare gli URL, ma questo si tradurrà in URL come:
/ prodotti /
anziché:
http://example.com/products/
Ciò significa che una volta che un utente inserisce una pagina HTTPS, saranno bloccati utilizzando il protocollo HTTPS a meno che non modificano manualmente l'URL nella barra degli indirizzi del browser.
Questo è dove django-protocolify brilla.
Utilizzo
{% Protocolify [vecchia] per
Esempio (richiesta assumendo doveva http://example.com/blah/):
{% Del carico protocolify%}
{% Protocolify a "https"%}
{% Endprotocolify%}
rende a:
Questo è attualmente implementato utilizzando un paio di espressioni regolari semplicistiche e urlparse.urljoin () (Nota: le vecchie default [a-zA-Z] +):
# Esempio href = "http://google.com"
re.sub (r '(src | href) = "% s: //' vecchio%, r ' 1 ="% s: //'% nuovo, ...)
# Esempio href = "../ prodotti"
re.findall (r "" "(src | href) = (" | ') ([az] [a-z0-9 + -.] *:?!.?) (*) 2 "" ")
Quando un percorso relativo viene sostituito (es ../products) è unito al request.path. Per questo lavoro, il contesto modello deve contenere il HttpRequest in una variabile richiesta. Ciò può essere ottenuto utilizzando un RequestContext e aggiungendo "django.core.context_processors.request" per l'impostazione TEMPLATE_CONTEXT_PROCESSORS.
Ambiguitity Domain è introdotto quando un percorso relativo (ad esempio / prodotti /) è protocolified (perché deve essere specificato il dominio). Congetture dominio sono eseguite nel seguente ordine:
1. request.META ["HTTP_HOST"] - quando il contesto contiene richiesta
2. Site.objects.get_current (). Dominio
Installazione
1. Scaricare e installare: pip installare django-protocolify
2. Aggiungere "protocolify" per l'impostazione INSTALLED_APPS nel progetto
Requisiti .
- Python
- Django
I commenti non trovato