Pasar contexto a sus plantillas desde vistas basadas en clases es fácil una vez que sabe qué buscar. Hay dos formas de hacerlo: una involucra get_context_data, la otra es modificando la variable extra_context. Veamos cómo usar ambos métodos uno por uno.
Explicación:
Ilustración de cómo usar el método get_context_data y la variable extra_context para pasar contexto a sus plantillas usando un ejemplo. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks.
Refer to the following articles to check how to create a project and an app in django. How to Create Basic Project using MVT in Django? How to Create an App in Django ?
Método 1 : Usar el método get_context_data
Dentro de models.py agrega el siguiente código:
Python3
from django.db import models # Create your models here. class YourModel(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) def __str__(self): return self.first_name
Después de crear este modelo, necesitamos ejecutar dos comandos para crear una base de datos para el mismo.
python manage.py makemigrations python manage.py migrate
Cree la carpeta llamada templates dentro del directorio de la aplicación (geeks), dentro de esta carpeta agregue el archivo llamado Intro.html y agregue el siguiente código:
HTML
<!-- Intro.html --> <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Intro</title> </head> <body> <h1>All users name </h1> {% for user in users %} {{user.first_name}} {% endfor %} </body> </html>
Dentro del archivo views.py agrega el siguiente código:
Python3
from django.views.generic.base import TemplateView from .models import YourModel class Intro(TemplateView): template_name = 'Intro.html' def get_context_data(self,*args, **kwargs): context = super(Intro, self).get_context_data(*args,**kwargs) context['users'] = YourModel.objects.all() return context
Dentro del archivo urls.py del proyecto llamado geeksforgeeks, agregue el siguiente código:
Python3
from django.contrib import admin from django.urls import path from geeks.views import Intro urlpatterns = [ path('admin/', admin.site.urls), path('',Intro.as_view(),name="intro") ]
Método 2: Usando la variable extra_context
Vuelva a escribir el archivo views.py agregando el siguiente código:
Python3
from django.views.generic.base import TemplateView from .models import YourModel class Intro(TemplateView): template_name = 'Intro.html' extra_context={'users': YourModel.objects.all()}
Con ambos métodos, verá el mismo resultado. Verifiquemos qué hay en http://localhost:8000/ , antes de hacer esto, no olvide agregar algunos datos a su modelo.
How to add data to your model Django ORM – Inserting, Updating & Deleting Data