Plantillas Django – Part 3

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, 

django-templates

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *