La url que apunta a “/” será resuelta por la vista llamada landing definida en el archivo views.py de nuestra app.
views.py
landing.html
Resultado:
El resultado sería el deseado. Sin embargo, aún estamos usando una simple función de Python. La forma más sencilla de resolver esta tarea cotidiana mediante class-based views es usando una de las clases genéricas que Django ofrece para ser usada como vista y renderizar un HTML. Es decir, la clase TemplateView.
Editando sólo el archivo de urls de la siguiente manera lograremos el mismo resultado:
urls.py
- En la línea 2 importamos la clase TemplateView desde las vistas genéricas de Django. Esta es la que nos permite hacer el renderizado de un template simplemente instanciando de ella misma.
- En la línea 5 después de nuestra expresión regular indicando la URL que será atendida, indicamos que la vista que atenderá esa petición será una instancia de la clase TemplateView usando el método as_view y pasándole el nombre de nuestro template en el parámetro template_name.
- En la línea 2, importamos las case LandingView que vamos a crear en el nuestro views.py.
- Y en la línea 5, usando el método as_view, indicamos que la url “/” será resuelta por nuestra class-based view.
- En la línea 1 y 2 importamos la vista genérica y la librería para generar un número aleatorio.
- En la línea 4 creamos nuestra clase LandingView que hereda de TemplateView para poder usar todos los métodos y propiedades de esta última.
- Definimos el nombre de nuestro template en la línea 5 y redefinimos el método get_context_data que es el encargado de llevar los datos a nuestro template.
- Dentro del método en la línea 8 igualamos la variable context al resultado de ejecutar el método get_context_data antes de ser redefinido.
- En la línea 9 agregamos a context el número random entre 1 y 10.
- En la línea 10 regresamos el contexto de manera que quede actualizado en el template.
Agregamos un párrafo en el template para escribir el número generado aleatoriamente.
landing.py
Resultado:
TemplateView es sólo una class-based view genérica de todas las que encontramos en Django. Puedes consultarlas todas aquí o en la documentación oficial.
Recuerda que así como creamos nuestra propia class-based view heredando de TemplateView también puedes crear una más compleja heredando de View y así ahorrar algunas líneas de código, mejorar la legibilidad de tu proyecto y personalizar tus procesos. Si quieres conocer más a fondo su funcionamiento, puedes tomar el Curso Profesional de Backend de Platzi.Educación online efectiva
Aprende con expertos de la industria
COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE
0 Comentarios
para escribir tu comentario








