Hay momentos en los que le gustaría utilizar una plantilla diferente, basado en el valor de un encabezado de solicitud HTTP. Por ejemplo, diferentes nombres de dominio, los diferentes tipos de navegador, o incluso la página de referencia. El proyecto dynamicloader le permite especificar una lista separada de directorios en la que Django debe buscar plantillas, sobre la base de un valor en el encabezado de la solicitud.
Instalación
1. Instale `` dynamicloader`` en su camino Python.
2. Agregar `` 'dynamicloader.middleware.RequestMiddleware', `` en su configuración `` MIDDLEWARE_CLASSES``.
3. Agregar `` 'dynamicloader.loader.load_template_source', `` en la parte superior * * de su `` ajuste TEMPLATE_LOADERS``.
4. Crear un nuevo ajuste, `` DYN_TEMPLATE_MAP``, en el siguiente 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'): ('/ ruta / al / directorio', '/ path / to / directorio2',),
& 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; }
Mapa Plantilla Ejemplos
Nombre de Dominio Diferencias
Este ejemplo permite la anulación de determinadas plantillas basadas en el nombre de dominio o subdominio. En esta configuración, Django buscará en `` / path / to / directory`` primero si el `` HTTP_HOST`` incluye el 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'): ('/ ruta / al / directorio',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Diferencias de navegador
Este ejemplo permite la entrega de diferentes plantillas (o los simplemente específicas) basados en el navegador del usuario.
& 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'): ('directorio / path / to /',),
& Nbsp; & nbsp; & nbsp; & Nbsp; & nbsp; & nbsp; },
& Nbsp; & nbsp; & nbsp; }
Diferencias cadena de consulta
En este ejemplo se comprueba la cadena de consulta para decidir qué plantilla utilizar en función de una cadena de consulta (las cosas después de un "?" En un URL).
DYN_TEMPLATE_MAP = {
& Nbsp; & nbsp; & nbsp; 'QUERY_STRING': {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; re.compile ('imreallycool = 1'): ('/ ruta / al / directorio',),
& Nbsp; & nbsp; & nbsp; },
}
Requisitos :
- Python
- Django
Comentarios que no se encuentran