"Django-protocolify yra šablonas tag Django, kuri leidžia protokolas / schema naudojama nuorodos viduje iš šablono kodo bloko turi būti pakeistas.
Naudojimo atvejis tai yra, kai savo svetainėje skyrius naudoja HTTPS (pvz mokėjimo puslapyje) ir norite naudoti grįžti į naudojant HTTP, jei jie išėję iš šio puslapio. Paprastai jums bus naudojant {% url%} šablono žymeles generuoti URL, tačiau tai lems URL, pavyzdžiui:
/ produktai /
geriau nei:
http://example.com/products/
Tai reiškia, kad, kai vartotojas įveda HTTPS puslapį, jie bus nesuprantamos, naudojant HTTPS, nebent jie rankiniu būdu pakeisti savo naršyklės adreso juostą URL.
Tai kur Django-protocolify šviečia.
Naudojimas
{% Protocolify [metai], kad
Pavyzdys (darant prielaidą, prašymas buvo http://example.com/blah/):
{% Apkrova protocolify%}
{% Protocolify į "https",%}
>
>
>
>
>
>
>
>
>
{% Endprotocolify%}
teikia į:
>
>
>
>
>
>
>
>
>
>
Tai šiuo metu yra įgyvendintas naudojant supaprastintais reguliarios išraiškos ir urlparse.urljoin () Pora (Pastaba: seni nutylėjimą [A-ZA-Z] +):
# Pvz href = "http://google.com"
re.sub (R "(src | href) ="% s: // "% senas, R ' 1 ="% s: // "% naujas, ...)
# Pvz href = "../ produktai"
re.findall (r "" "(src | Href) = (" | ") ([AZ] [-Z0-9 + -.] *:?!.?) (*) 2" "")
Kai santykinis kelias pakeičiama (pvz ../products) jis prisijungė prie request.path. Kad tai veiktų, šabloną, turi būti pateikta prašyme kintamojo HttpRequest. Tai gali būti pasiekta naudojant RequestContext ir pridedant "django.core.context_processors.request" į TEMPLATE_CONTEXT_PROCESSORS nustatymą.
Domeno ambiguitity yra įvestas, kai santykinis kelias (pvz / produktai /) yra protocolified (nes domenas turi būti nurodyta). Domenų spėlionės atliekami tokia tvarka:
1. request.META ["HTTP_HOST"] - kai kontekstas yra prašymą
2. Site.objects.get_current (). Domeną
Diegimas
1. Atsisiųsti ir įdiegti: PIP įdiegti Django-protocolify
2. Pridėti "protocolify" į INSTALLED_APPS nustatymo savo projektą
Reikalavimai .
- Python,
- Django
Komentarai nerastas