DJANGO - ELEMENTOS BASICOS DE PROGRAMACION EN PLANTILLAS

En esta sesión detallamos elementos básicos de programación disponibles en el lenguaje de plantillas de Django, como variables, ciclos, condicionales y filtros de salida.

Cargando video...

NOTA: Solo puedes ver una versión limitada del video a baja resolución, si quieres ver la versión completa por favor regístrate y obtén alguno de nuestros planes!

Descripción del Vídeo

En el lenguaje de plantillas de Django, podemos utilizar elementos sencillos de programación para incorporar la lógica básica de presentación:
Variables, ciclos, condicionales.
Filtros para transformar automáticamente la salida/formato de valores y bloques.
Mostrar variable con valor predeterminado en plantilla base en curso/encuestas/templates/encuestas/base.html

<!DOCTYPE html>
<html lang="es">
 <head>
   <title>{{ titulo | default:"Encuestas" }}</title>
   <meta charset="UTF-8">
 </head>
 <body>
   <header>{% block encabezado %}<h1>Encuestas</h1>{% endblock %}</header>
   <nav>
       {% block navegacion %}
       <ul>
           <li><a href="{% url 'encuestas:index' %}">Inicio</a></li>
           {% block navegacion-elementos %}{% endblock %}
           <li><a href="#contacto">Contacto</a></li>
       </ul>
       {% endblock %}
   </nav>
   <section id="contenido">
       {% block contenido %}{% endblock %}
   </section>
   <section id="contacto">
       <h2>Contacto:</h2>
       {% include 'encuestas/direccion.html' %}
   </section>
   <footer>Pie de página</footer>
 </body>
</html>

Personalizar variable para plantilla en curso/encuestas/views.py

…
def index(request):
   preguntas_recientes = Pregunta.objects.order_by('-fe_publicacion')[:5]
   context = {'preguntas_recientes': preguntas_recientes,
              'titulo': 'Listado de Encuestas' }
   return render(request, 'encuestas/index.html', context)
…

Aplicar filtros en curso/encuestas/templates/encuestas/direccion.html

<address>
{% filter linebreaksbr %}
   <strong>Homer J. Simpson</strong>
   742 Evergreen Terrace
   Springfield
   <abbr title="Teléfono">T:</abbr> (123) SIMPSONS - (123) {{ 'SIMPSONS'|phone2numeric }}
   <abbr title="Móvil">M:</abbr> (123) 456-7890
{% endfilter %}
</address>

Mostrar concatenación de filtros, escape, ciclo for en curso/encuestas/templates/encuestas/detalle.html

{% extends 'encuestas/base.html' %}


{% block encabezado %}
<h1>Detalle de Encuesta: {{ pregunta.texto_pregunta|truncatewords:5|escape }}...</h1>
{% endblock encabezado %}

{% block contenido %}
<h2>{{ pregunta.texto_pregunta|escape }}</h2>
<ul>
{% for opcion in pregunta.opcion_set.all %}
   <li>{{ opcion.texto_opcion }}</li>
{% endfor %}
</ul>
<div id="acciones">
   <a href="{% url 'encuestas:resultados' pregunta.id %}">
   Ver resultados
   </a>
</div>

{% endblock contenido %}

Mostrar ejemplo de condicional y usar bloque de auto-escape en curso/encuestas/templates/encuestas/index.html

{% extends 'encuestas/base.html' %}

{% block contenido %}
{% autoescape on %}

{% if preguntas_recientes %}
   <h2>Encuestas recientes</h2>
   <ul>
   {% for pregunta in preguntas_recientes %}
       <li>
           <a href="{% url 'encuestas:detalle' pregunta.id %}">
           {{ pregunta.texto_pregunta }}
           </a>
           |
           <a href="{% url 'encuestas:resultados' pregunta.id %}">
           Ver resultados
           </a>
       </li>
   {% endfor %}
   </ul>
{% else %}
   <p>No hay encuestas disponibles.</p>
{% endif %}

{% endautoescape %}
{% endblock contenido %}

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.