django-protocolify é uma marca de modelo para Django que permite que o protocolo / esquema utilizado em links dentro de um bloco de código do modelo a ser alterado.
Um caso de uso para isso é quando uma seção de seu site usa HTTPS (por exemplo, uma página de pagamento) e você quer que o usuário voltar a usar o HTTP se sair da página. Normalmente você estará usando o {% url%} tag modelo para gerar URLs, porém isso vai resultar em URLs como:
/ produtos /
em vez de:
http://example.com/products/
Isto significa que uma vez que um usuário entra em uma página HTTPS, eles vão ser preso usando HTTPS, a menos que modificar manualmente a URL na barra de endereços do seu browser.
Este é o lugar onde django-protocolify brilha.
Uso
{% Protocolify [de idade] para
Exemplo (pedido assumindo era http://example.com/blah/):
{% Load%} protocolify
{% Protocolify para "https"}%
{% Endprotocolify%}
torna a:
Este é actualmente implementado usando um par de expressões regulares simplistas e urlparse.urljoin () (Nota: defaults antigos para [a-zA-Z] +):
# Por exemplo href = "http://google.com"
re.sub (r '(src | href) = "% s: //'% velho, r ' 1 ="% s: //'% novo, ...)
# Por exemplo href = "../ produtos"
re.findall (r "" "(src | href) = (" | ") ([z] [a-z0-9 + -.] *:?!.?) (*) 2" "")
Quando um caminho relativo é substituído (por exemplo ../products) está se juntou ao request.path. Para que isso funcione, o contexto modelo deve conter o HttpRequest em uma variável de solicitação. Isto pode ser conseguido usando um RequestContext e adicionando "django.core.context_processors.request" para a definição TEMPLATE_CONTEXT_PROCESSORS.
Ambiguitity domínio é introduzido quando um caminho relativo (por exemplo, produtos / /) é protocolified (porque o domínio deve ser especificado). Suposições domínio são realizados pela seguinte ordem:
1. request.META ["HTTP_HOST"] - quando o contexto contém pedido
2. Site.objects.get_current (). Domínio
Instalação
1. Baixe e instale: pip instalar django-protocolify
2. Adicionar "protocolify" para a configuração INSTALLED_APPS no seu projeto
Requisitos :.
- Python
- Django
Comentários não encontrado