Django-protocolify er en skabelon tag for Django, der giver den protokol / ordningen anvendes i links i en blok af skabelon kode, der skal ændres.
En use-tilfælde til dette er, når en del af dit websted bruger HTTPS (fx en betalingsside), og du ønsker, at brugeren til at vende tilbage til at bruge HTTP hvis de forlader siden. Typisk du skal bruge den {% url%} skabelon tag til at generere URL'er, men dette vil resultere i URL'er som:
/ produkter /
snarere end:
http://example.com/products/
Det betyder, at når en bruger indtaster en HTTPS side, vil de blive hængende ved hjælp af HTTPS, medmindre de manuelt ændre webadressen i deres browsers adresselinje.
Det er her, Django-protocolify skinner.
Anvendelse
{% Protocolify [gammel] til
Eksempel (forudsat anmodning var at http://example.com/blah/):
{% Belastning protocolify%}
{% Protocolify til "https"%}
{% Endprotocolify%}
gør til:
Dette er i øjeblikket implementeres ved hjælp af et par simple regulære udtryk og urlparse.urljoin () (Bemærk: gamle standard [a-zA-Z] +):
# F.eks href = "http://google.com"
re.sub (r «(src | href) ="% s: // '% gamle, r' 1 = "% s: // '% ny, ...)
# F.eks href = "../ produkter"
re.findall (r "" "(src | href) = (" | ") ([az] [a-Z0-9 + -.] *:?!.?) (*) 2" "")
Når en relativ sti erstattes (f.eks ../products) det er sluttet til request.path. For at dette skal fungere, skal skabelonen kontekst indeholde HttpRequest i en anmodning variabel. Dette kan opnås ved anvendelse af en RequestContext og tilføje "django.core.context_processors.request" til TEMPLATE_CONTEXT_PROCESSORS indstilling.
Domæne ambiguitity indføres, når en relativ sti (f.eks / produkter /) er protocolified (fordi domænet skal specificeres). Domain gætte udføres i følgende rækkefølge:
1. request.META ["HTTP_HOST"] - når sammenhæng indeholder anmodningen
2. Site.objects.get_current (). Domæne
Installation
1. Hent og installer: pip installere Django-protocolify
2. Tilføj "protocolify" til INSTALLED_APPS indstillingen i dit projekt
Krav :.
- Python
- Django
Kommentarer ikke fundet