¿Cómo pasar contexto adicional a una vista basada en clases (Django)?

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

Producción – 

Publicación traducida automáticamente

Artículo escrito por muskan24r y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *