Há momentos em que você gostaria de usar um modelo diferente com base no valor de um cabeçalho de solicitação HTTP. Por exemplo, nomes de domínios diferentes, diferentes tipos de navegadores, ou mesmo a página de referência. O projeto dynamicloader permite que você especifique uma lista separada de diretórios em que Django deve procurar modelos, com base em um valor no cabeçalho do pedido.
Instalação
1. Instale o `` dynamicloader`` em seu caminho Python.
2. Adicione `` 'dynamicloader.middleware.RequestMiddleware', `` em sua configuração `` MIDDLEWARE_CLASSES``.
3. Adicione `` 'dynamicloader.loader.load_template_source', `` no topo * * da sua configuração TEMPLATE_LOADERS`` ``.
4. Crie uma nova configuração, `` DYN_TEMPLATE_MAP``, no seguinte formato ::
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HEADER1': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('valor1'): ('/ path / to / diretório', '/ path / to / directory2',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('valor2'): ('/ path / to / directory3',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HEADER2': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('valor1'): ('/ path / to / directory4',)
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; }
& Nbsp; & nbsp; & nbsp; }
Template Mapa Exemplos
Nome de Domínio Diferenças
Este exemplo permite a substituição de certos modelos com base no nome de domínio ou subdomínio. Nesta configuração, Django vai olhar em `` / path / to / directory`` primeiro se o `` HTTP_HOST`` inclui o valor `` www2``.
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_HOST': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('www2'): ('/ path / to / diretório',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Diferenças de Browser
Este exemplo permite a entrega de diferentes modelos (ou aqueles apenas específicos), com base no navegador do usuário.
& Nbsp; & nbsp; & nbsp; DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; 'HTTP_USER_AGENT': {
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('iPhone | iPod "): (' / path / to / diretório ',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Diferenças string query
Este exemplo verifica a string de consulta para decidir qual modelo a ser usado com base em uma seqüência de consulta (o material depois de um "?" Em uma URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ path / to / diretório',),
& Nbsp; & nbsp; & nbsp; },
}
Requisitos :
- Python
- Django
Comentários não encontrado