Джанго-protocolify е шаблон маркер за Django, която позволява на протокол / схемата, използвана в връзките в даден блок от кода на шаблона да се промени.
A ползване случай за това е, когато една част от вашия уеб сайт използва HTTPS (напр страница плащане) и искате потребителят да се върнете към използване на HTTP, ако напуснат страницата. Обикновено ще се използва на {% URL%} шаблон маркер за генериране на URL адреси, обаче това ще доведе до URL адреси, като:
/ продукти /
отколкото:
http://example.com/products/
Това означава, че след като потребителят въведе страница HTTPS, те ще се залепи с помощта на HTTPS, освен ако те ръчна промяна на адреса в адресната лента на браузъра си.
Това е мястото, където Джанго-protocolify блести.
<Силен> Usage
{% Protocolify [стара], за да <нова>%}
Пример (ако приемем искане беше да http://example.com/blah/):
{% Натоварване protocolify%}
{% Protocolify да "HTTPS"%}
<Един HREF = "/ ABCD /">
<Един HREF = "ABCD /">
<Един HREF = "./ ABCD /">
<Един HREF = "../ ABCD /">
<Един HREF = "http://example.com/abcd/">
<Един HREF = "http://example.com">
<Един HREF = "ftp://example.com/abcd/">
<Един HREF = "ftp://example.com">
<Един HREF = "ftp://example.com/">
<Един HREF = "">
{% Endprotocolify%}
прави, за да:
<Един HREF = "https://example.com/abcd/">
<Един HREF = "https://example.com/blah/abcd/">
<Един HREF = "https://example.com/blah/abcd/">
<Един HREF = "https://example.com/abcd/">
<Един HREF = "https://example.com/abcd/">
<Един HREF = "https://example.com">
<Един HREF = "https://example.com/abcd/">
<Един HREF = "https://example.com">
<Един HREF = "https://example.com/">
<Един HREF = "https://example.com/blah/">
В момента това се осъществява чрез използване на няколко опростени регулярни изрази и urlparse.urljoin () (Забележка: стари подразбиране [A-Za-Z] +):
# Напр HREF = "http://google.com"
re.sub (R "(SRC | HREF) ="% S: // "% а, R ' 1 ="% S: // "% нова, ...)
# Напр HREF = "../ продукти"
re.findall (R "" "(SRC | HREF) = (" | ") ([AZ] [A-z0-9 + -.] *:?!.?) (*) 2" "")
Когато относителен път се заменя (напр ../products) тя е присъединена към request.path. За да стане това, контекста на шаблон трябва да съдържа HttpRequest в променлива поискване. Това може да се постигне чрез използване на RequestContext и добавяне "django.core.context_processors.request" към настройката по TEMPLATE_CONTEXT_PROCESSORS.
Ambiguitity Domain се въвежда, когато относителен път (например / продукти /) се protocolified (защото на домейна трябва да бъдат посочени). Предположения на домейни се извършва в следната последователност:
1. request.META ["HTTP_HOST"] - когато контекста съдържа искане
2. Site.objects.get_current (). Домейн
<Силен> Инсталиране
1. Изтеглете и инсталирайте: PIP инсталирате Джанго-protocolify
2. Добавяне на "protocolify" за създаването INSTALLED_APPS във вашия проект
<силни> Изисквания :.
- Python
- Django
Коментари не е намерена