Utilizamos cookies propias y de terceros para hacer funcionar y mejorar nuestros servicios. Si continúa navegando, consideramos que acepta su uso. Puede obtener más información visitando nuestra política de cookies.
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
comments powered by Disqus