Menu
CoddyTech

Adicionando ao contexto

Parte da seção Views baseadas em classes do Journey de Django da Coddy. Lição 3 de 18.

A página inicial também poderia ser uma TemplateView, exceto pelo fato de que seu template precisa de dados. As variáveis que um template recebe são seu contexto, e uma view genérica as cria em um método, get_context_data(). Sobrescreva-o para adicionar os seus próprios dados. Um site de receitas conta suas receitas rápidas:

class RecipeHomeView(TemplateView):
    template_name = "recipes/home.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["quick"] = Recipe.objects.filter(minutes__lte=30).count()
        return context

Três etapas, sempre iguais: super().get_context_data(**kwargs) obtém o dicionário criado pelo Django, você adiciona suas chaves e return o dicionário. O template recebe o que quer que esse método retorne.

A consulta fica dentro do método, então é executada em cada requisição. Como atributo da classe, ela seria executada uma vez, quando o servidor inicia, e o número nunca mudaria.

challenge icon

Desafio

Fácil

O template inicial agora também mostra a vaga mais recente. Reescreva HomeView:

  • Uma TemplateView para jobs/home.html, sem get().
  • Ela adiciona count, o número de vagas, e latest, a vaga com a data posted mais recente, ao contexto.

Pressione Run: a página inicial diz 12 jobs open e Newest: Python Developer at Brightline.

Experimente você mesmo

from django.shortcuts import render
from django.views import View
from django.views.generic import TemplateView

from .models import Job


class HomeView(View):
    def get(self, request):
        count = Job.objects.count()
        return render(request, "jobs/home.html", {"count": count})


class AboutView(TemplateView):
    template_name = "jobs/about.html"
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Views baseadas em classes

Pratique por conta própria: Playground de Django