django-protocolify ay isang tag na template para sa Django na nagpapahintulot sa mga protocol / scheme na ginagamit sa mga link sa loob ng isang bloke ng template code na nagbago.
A gamitin-kaso para sa mga ito ay kapag ang isang seksyon ng iyong web site ay gumagamit ng HTTPS (halimbawa, isang pahina ng pagbabayad) at gusto mo ng user na bumalik sa paggamit ng HTTP kung iwan nila ang mga page. Kadalasan ikaw ay gumagamit ng mga {% url%} template tag upang bumuo ng mga URL, subalit ito ay magreresulta sa mga URL na tulad ng:
/ Mga produkto /
sa halip:
http://example.com/products/
Ito ay nangangahulugan na sa sandaling ipinasok ng gumagamit ng isang pahina HTTPS, sila ay makaalis gamit ang HTTPS maliban manually nilang baguhin ang URL sa address bar ng kanilang browser.
Ito ay kung saan nagniningning django-protocolify.
Usage
{% Protocolify [old] sa
Halimbawa (ipagpalagay na kahilingan ay upang http://example.com/blah/):
{% Load protocolify%}
{% Protocolify sa "https"%}
{% Endprotocolify%}
nagpapagana sa:
Ito ay kasalukuyang ipinapatupad sa paggamit ng isang pares ng mga simplistic regular na expression at urlparse.urljoin () (Tandaan: Ang mga lumang default na [a-zA-Z] +):
# Hal href = "http://google.com"
re.sub (r '(src | href) = "% s: //'% old, r ' 1 ="% s: //'% bagong, ...)
# Hal href = "../ produkto"
re.findall (r "" "(src | href) = (" | ') ([az] [a-z0-9 + -.] *:?!.?) (*) 2 "" ")
Kapag ang isang kamag-anak landas ay papalitan (eg ../products) ito ay isinasama sa request.path. Para gumana ito, ang mga template na konteksto ay dapat naglalaman ng HttpRequest sa isang variable kahilingan. Ito ay maaaring nakakamit sa pamamagitan ng paggamit ng isang RequestContext at pagdaragdag ng "django.core.context_processors.request" sa mga setting TEMPLATE_CONTEXT_PROCESSORS.
Domain ambiguitity ay ipinakilala kapag ang isang kamag-anak na path (eg / mga produkto /) ay protocolified (dahil dapat na tinukoy ng domain). Guesses Domain ay ginanap sa mga sumusunod na order:
1. request.META ["HTTP_HOST"] - kapag naglalaman ang konteksto ng kahilingan
2. Site.objects.get_current (). Domain
Pag-install
1. I-download at i-install: pip install django-protocolify
2. Idagdag ang "protocolify" sa mga setting INSTALLED_APPS sa iyong proyekto
Kinakailangan .
- sawa
- Django
Mga Komento hindi natagpuan