Passa al contingut principal

Curso Django: Las vistas

Curso Django: Las vistas:
Esta semana nos toca ver el tema de vistas, no se olviden que si este es el primer artículo que leen sobre Django en Maestros del Web, deben revisar la guía por completo, incluyendo los comentarios, donde se solucionaron muchas dudas, es necesario para que comprendan los ejemplos y aprendan fácilmente Django.

Vistas

Un función de vista o una vista, como es conocida generalmente, es una función en Python que hace una solicitud Web y devuelve una respuesta Web, esta respuesta puede ser el contenido de una página, un error 404, una imagen, un documento XML, entre muchas cosas más.
La vista contiene toda la lógica necesaria para devolver una respuesta, todas estas respuestas se encuentran en un único archivo y este archivo se llama: views.py, que se encuentra dentro de cada aplicación de Django.

Las consultas y las vistas

En el capítulo anterior, jugamos con algunas consultas, estas consultas son parte fundamental de las vistas, permiten elegir que tipo de contenido se visualizará. Revisa y practica, si no lo hiciste, para poder obtener mejores resultados.

Las plantillas y las vistas

Las plantillas son muy importantes, permiten acomodar el resultado que devuelve la vista. Django tiene un estupendo motor de plantillas que permite separar eficientemente la presentación, de la lógica de programación, esta semana trabajaremos con algunas plantillas simples para no causar confusión.

Proyecto de ejemplo: las vistas

Para esta semana debemos tener en cuenta que nuestros modelos almacenados en models.py dentro de la aplicación principal, quedaron así:
models.py recetario
models.py recetario
Rellenamos algunos datos para poder tener resultados:
Django admin dashboard
Django admin dashboard
Django admin, agregar usuarios
Django admin, agregar usuarios
Django admin, agregar recetas
Django admin, agregar recetas
Con estos datos empezaremos a hacer algunas vistas para nuestro proyecto. Empezaremos con las importaciones necesarias, que son estas:
Django views.py import
Django views.py import
La primera de ellas es porque necesitamos los modelos, la segunda línea para poder usar los datos del modelo usuario, la tercera línea es la respuesta más simple (HttpResponse), la cuarta importa: render_to_response (para las plantillas) y get_object_or_404 (para lanzar un error 404, de no encontrar ningún valor almacenado) y la quinta línea importa el RequestContext (en este caso para poder usar la ruta de las imágenes almacenadas previamente en la carpeta carga y referenciadas por la url media).
Ahora pasemos a ver donde usamos específicamente cada uno de estos componentes.

Vista: sobre

Esta vista es un ejemplo muy simple del uso de HttpResponse, está devolviendo el contenido HTML:
vista sobre
vista sobre

Nota:

Vamos a modificar urls.py, reescribir casi por completo, si eres impaciente y quieres ver como queda al final urls.py o no entiendes muy bien como hacerlo, puedes echarle un vistazo
Debemos tener en cuenta que siempre debemos acompañar una vista de su configuración en urls.py, así que en este archivo debemos tener esta línea: (ubicada dentro de patterns)
url(r'^sobre/,'principal.views.sobre'),
Lanzamos nuestro servidor de desarrollo:(como todas las semanas)
python manage.py runserver
Y vamos a la dirección:

http://127.0.0.1:8000/sobre/
vista sobre en el navegador
vista sobre en el navegador

Vista: Inicio

vista inicio
vista inicio
La vista inicio, hace una consulta de todas las recetas y las almacena en una variable llamada recetas (también), es aquí donde es apropiado usar render_to_response para poder indicarle que vamos a usar la plantilla inicio.html, y que le pasaremos en un diccionario (concepto de python), el resultado de la consulta.
La plantilla inicio.html debemos crearla en la carpeta ‘plantillas’ que se encuentra en ‘recetario’ (creada previamente en capítulos anteriores), su contenido debe ser similar al siguiente:
inicio.html
inicio.html
Veremos unos símbolos {% %} que por no deben distraernos, así que no entraré en detalles al respecto, pueden intuir de que trata, pero prefiero no confundirlos y dejarlos para la próxima semana.
Ahora igual que el ejemplo anterior debemos agregar la siguiente línea en nuestra configuración de las url en urls.py:
url(r'^,'principal.views.inicio'),
Nuestro servidor debe estar funcionando y podemos ingresar a la siguiente dirección:
http://127.0.0.1:8000/
inicio.html
inicio.html

Vista: usuarios

Esta vista saca los datos de los usuarios registrados, y las recetas registradas. Y repite el mismo procedimiento de la vista anterior.
vista usuarios
vista usuarios
La plantilla usuarios.html debe ser creada en la carpeta plantillas y debe tener un contenido similar al siguiente:
usuarios.html
usuarios.html
En esta plantilla se estan juntando a los usuarios y sus respectivas recetas, agregamos la siguiente regla al urls.py:
url(r'^usuarios/,'principal.views.usuarios'),
para ver el resultado (servidor corriendo), debemos entrar a:
http://127.0.0.1:8000/usuarios/
Resultado de la vista usuarios
Resultado de la vista usuarios

Vista: lista_recetas

vista lista_recetas
vista lista_recetas
Esta vista, se diferencia de las anteriores por el uso de context_instance=RequestContext(request), usada para indicarle a la plantilla el parámetro {{MEDIA_URL}} que referencia a la ruta de las imágenes, la plantilla recetas.html, debe quedar así:
Resultado de la vista lista_recetas
Resultado de la vista lista_recetas
La línea en urls.py debe ser así:
url(r'^recetas/,'principal.views.lista_recetas'),
Y se deben visualizar los resultados en:
http://127.0.0.1:8000/recetas/
Resultado de la vista lista_recetas
Resultado de la vista lista_recetas

Vista: detalle_receta

vista detalle_receta
vista detalle_receta
Esta vista recibe un parametro mas: id_receta, que le sirve para hacer una consulta del detalle de esa receta (corresponde a su llave primaria) y usa get_object_or_404(Receta, pk=id_receta), para obtener un objeto o un error 404 en caso de no encontrar resultado alguno.
Con este resultado, se realiza una consulta para obtener sus comentarios. La plantilla receta.html, quedará así:
receta.html
receta.html
La línea en urls.py debe ser así: (notar las expresiones regulares en python)
url(r'^receta/(?P<id_receta>\d+)${body}#39;,'principal.views.detalle_receta'),
Y se deben visualizar los resultados al darle clic en los enlaces a recetas en:
http://127.0.0.1:8000/recetas/
receta: huevito frito
receta: huevito frito
receta: agua hervida
receta: agua hervida
receta: limonada
receta: limonada

Archivo final: views.py

Al final de todo, views.py debe quedar de esta manera:
views.py
views.py

Archivo: urls.py

El archivo urls.py, permite tener unas urls limpias, para nuestro ejemplo este debe quedar de la siguiente manera: (si fuiste impaciente, regresa a la vista: sobre :) )
urls.py
urls.py
Para finalizar, si se perdieron con alguna línea o si desean corroborar que todo va bien, pueden estar pendientes del repositorio del proyecto.
La próxima semana veremos el tema de las plantillas con un poco más de detalle, practiquen haciendo sus propias vistas, usando las consultas que aprendieron en el capítulo anterior y complementen lo aprendido con un vistazo a la documentación oficial, que nunca esta demás. Que tengan buen inicio de semana :) .

Sergio Infante Montero Sergio Infante Montero para Maestros del Web.
Agrega tu comentario | Enlace permanente al artículo

Síguenos en: @maestros | Fan page

Comentaris

Entrades populars d'aquest blog

10 alternativas a Cuevana para ver películas online

10 alternativas a Cuevana para ver películas online : Durante este último tiempo, en Cuevana se sucedieron varios “problemas” por los cuales hubo que ajustar algunas cosas antes de tiempo (como el rediseño del sitio), que dejaron a algunos usuarios ciertos problemas para acceder a las películas o series del portal. Pero realmente esto es algo que no incumbe a los usuarios y, como sabemos, existen muchas otras alternativas a Cuevana dando vueltas por Internet, que intentaremos presentar aquí mismo. Los sitios que repasaremos funcionan del mismo modo que Cuevana, mediante la instalación de un plugin que permite visualizar los videos de Megaupload o WUShare, entre otros servicios, en una calidad de imágen realmente excelente. Tal como sucede con el más popular servicio, todos ellos tienen publicidad que en algunos casos resulta insoportable, pero como dice Federico en DotPod “a caballo regalado no se le miran los dientes”. Alternativas a Cuevana 1. Moviezet Posiblemente el mejor clon d

Sitio alternativo a Cuevana: Moviezet

Sitio alternativo a Cuevana: Moviezet : Nadie se quiere enfrentar al monstruo Cuevana , tan popular por estos días que es casi imposible ver tu serie favorita o tu película sin tener problema de saturación de tráfico. Pero hay proyectos muy sanos y prometedores, sobre todo porque están basados como una muy buena alternativa . Señores estamos hablando obviamente de un sitio alternativo a Cuevana, llamado Moviezet. Como bien dijimos, Moviezet es una excelente alternativa a Cuevana, ya que podremos ver películas y series de forma gratuita sin necesidad de que existan cortes – al mejor estilo Megavideo – y que podremos tener un seguimiento, es decir, si miramos una serie, podremos ver toda la lista con los capítulos disponibles. Lo que tiene de novedoso este sitio web Moviezet , es que tiene películas y series que quizá en Cuevana no se puedan conseguir, pero atención, que puede suceder lo mismo, pero al revés. Entonces aquí intervenimos nosotros y te daremos un sabio consejo, para no

Learn Composition from the Photography of Henri Cartier-Bresson

“Do you see it?” This question is a photographic mantra. Myron Barnstone , my mentor, repeats this question every day with the hopes that we do “see it.” This obvious question reminds me that even though I have seen Cartier-Bresson’s prints and read his books, there are major parts of his work which remain hidden from public view. Beneath the surface of perfectly timed snap shots is a design sensibility that is rarely challenged by contemporary photographers. Henri Cartier-Bresson. © Martine Franck Words To Know 1:1.5 Ratio: The 35mm negative measures 36mm x 24mm. Mathematically it can be reduced to a 3:2 ratio. Reduced even further it will be referred to as the 1:1.5 Ratio or the 1.5 Rectangle. Eyes: The frame of an image is created by two vertical lines and two horizontal lines. The intersection of these lines is called an eye. The four corners of a negative can be called the “eyes.” This is extremely important because the diagonals connecting these lines will form the breakdown