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