Las plantillas son la tercera y más importante parte de la estructura MVT de Django . Una plantilla en Django está básicamente escrita en HTML, CSS y Javascript en un archivo .html. Django framework maneja y genera dinámicamente páginas web HTML que son visibles para el usuario final. Django funciona principalmente con un backend, por lo que, para proporcionar un frontend y proporcionar un diseño a nuestro sitio web, usamos plantillas. Existen dos métodos para añadir la plantilla a nuestro sitio web en función de nuestras necesidades.
Podemos usar un único directorio de plantillas que se distribuirá por todo el proyecto.
Para cada aplicación de nuestro proyecto, podemos crear un directorio de plantillas diferente.
Para nuestro proyecto actual, crearemos un único directorio de plantilla que se distribuirá por todo el proyecto para simplificar. Las plantillas a nivel de aplicación generalmente se usan en grandes proyectos o en caso de que queramos proporcionar un diseño diferente a cada componente de nuestra página web.
Configuración
Las plantillas de Django se pueden configurar en app_name/settings.py,
Python3
TEMPLATES = [ { # Template backend to be used, For example Jinja 'BACKEND': 'django.template.backends.django.DjangoTemplates', # Directories for templates 'DIRS': [], 'APP_DIRS': True, # options to configure 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
Usar plantillas de Django
Ilustración de cómo usar plantillas en Django usando un proyecto de ejemplo. Las plantillas no solo muestran datos estáticos sino también los datos de diferentes bases de datos conectadas a la aplicación a través de un diccionario de contexto. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks.
Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django.
Para representar una plantilla, se necesita una vista y una URL asignada a esa vista. Comencemos por crear una vista en geeks/views.py,
Python3
# import Http Response from django from django.shortcuts import render # create a function def geeks_view(request): # create a dictionary to pass # data to the template context ={ "data":"Gfg is the best", "list":[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } # return response with template and context return render(request, "geeks.html", context)
Ahora necesitamos asignar una URL para representar esta vista,
Python3
from django.urls import path # importing views from views..py from .views import geeks_view urlpatterns = [ path('', geeks_view), ]
Finalmente crea una plantilla en templates/geeks.html,
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Homepage</title> </head> <body> <h1>Welcome to Geeksforgeeks.</h1> <p> Data is {{ data }}</p> <h4>List is </h4> <ul> {% for i in list %} <li>{{ i }}</li> {% endfor %} </body> </html>
Vamos a comprobar si está funcionando,
El lenguaje de plantillas de Django
Esta es una de las facilidades más importantes proporcionadas por Django Templates. Una plantilla de Django es un documento de texto o una string de Python marcada con el lenguaje de plantillas de Django. Algunas construcciones son reconocidas e interpretadas por el motor de plantillas. Los principales son las variables y las etiquetas. Como usamos para el bucle en el ejemplo anterior, lo usamos como una etiqueta. De manera similar, podemos usar varias otras condiciones, como if, else, if-else, vacío, etc. Las principales características del lenguaje de plantillas de Django son Variables, Etiquetas, Filtros y Comentarios.
Variables
Las variables generan un valor del contexto, que es un objeto similar a un dictado que asigna claves a valores. Se puede acceder al objeto de contexto que enviamos desde la vista en la plantilla usando variables de Django Template.
Sintaxis
{{ variable_name }}
Las variables de ejemplo
están rodeadas por {{ y }} así:
My first name is {{ first_name }}. My last name is {{ last_name }}.
Con un contexto de {‘first_name’: ‘Naveen’, ‘last_name’: ‘Arora’}, esta plantilla representa:
My first name is Naveen. My last name is Arora.
Para saber más sobre las variables de plantilla de Django, visite – variables – Plantillas de Django
Etiquetas
Las etiquetas proporcionan una lógica arbitraria en el proceso de representación. Por ejemplo, una etiqueta puede generar contenido, servir como una estructura de control, por ejemplo, una declaración «si» o un bucle «for», obtener contenido de una base de datos o incluso habilitar el acceso a otras etiquetas de plantilla.
Sintaxis
{% tag_name %}
Ejemplo
Las etiquetas están rodeadas por {% y %} así:
{% csrf_token %}
La mayoría de las etiquetas aceptan argumentos, por ejemplo:
{% cycle 'odd' 'even' %}
Etiquetas de uso común | ||
---|---|---|
Comentario | ciclo | extiende |
si | en bucle | para… bucle vacío |
Operadores booleanos | primero de | incluir |
lorem | ahora | URL |
filtros
Django Template Engine proporciona filtros que se utilizan para transformar los valores de variables y argumentos de etiquetas. Ya hemos discutido las principales etiquetas de plantilla de Django. Las etiquetas no pueden modificar el valor de una variable, mientras que los filtros se pueden usar para incrementar el valor de una variable o modificarla según las necesidades propias.
Sintaxis
{{ variable_name | filter_name }}
Los filtros se pueden «enstringr». La salida de un filtro se aplica al siguiente. {{text|escape|linebreaks}} es un modismo común para escapar de los contenidos de texto y luego convertir los saltos de línea en etiquetas <p>.
Ejemplo
{{ value | length }}
Si el valor es [‘a’, ‘b’, ‘c’, ‘d’] , la salida será 4 .
Principales filtros de plantilla | ||
---|---|---|
agregar | agrega pestañas | capfirst |
centro | Corte | fecha |
defecto | ordenar | Divisible por |
Escapar | tamaño del archivofo divisible por rmat | primero |
unirse | ultimo | longitud |
Línea de números | más bajo | hacer_lista |
aleatorio | rodaja | slugify |
tiempo | tiempo desde | título |
lista desordenada | superior | el recuento de palabras |
Comentarios
La plantilla ignora todo entre {% comentario %} y {% comentario final %}. Se puede insertar una nota opcional en la primera etiqueta. Por ejemplo, esto es útil cuando se comenta el código para documentar por qué se deshabilitó el código.
Sintaxis
{% comment 'comment_name' %} {% endcomment %}
Ejemplo :
{% comment "Optional note" %} Commented out text with {{ create_date|date:"c" }} {% endcomment %}
Para saber más sobre el uso de comentarios en Plantillas, visite comentario – Etiquetas de plantilla de Django
Herencia de plantilla
La parte más potente y, por lo tanto, más compleja del motor de plantillas de Django es la herencia de plantillas. La herencia de plantillas le permite crear una plantilla básica de «esqueleto» que contiene todos los elementos comunes de su sitio y define bloques que las plantillas secundarias pueden anular. La etiqueta extends se usa para la herencia de plantillas en Django. Uno necesita repetir el mismo código una y otra vez. Al usar extensiones, podemos heredar plantillas y variables.
Sintaxis
{% extends 'template_name.html' %}
Ejemplo:
suponga la siguiente estructura de directorios:
dir1/ template.html base2.html my/ base3.html base1.html
En template.html, las siguientes rutas serían válidas:
HTML
{% extends "./base2.html" %} {% extends "../base1.html" %} {% extends "./my/base3.html" %}
Para saber más sobre herencia de plantillas y extensiones, visite extends – Django Template Tags
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA