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 contextTrê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.
Desafio
FácilO template inicial agora também mostra a vaga mais recente. Reescreva HomeView:
- Uma
TemplateViewparajobs/home.html, semget(). - Ela adiciona
count, o número de vagas, elatest, a vaga com a datapostedmais 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"
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