Questão de Programação — Frameworks em Programação — CESPE / CEBRASPE 2024
- Código
- ce191222
- Banca
- CESPE / CEBRASPE
- Órgão
- CAGEPA - PB
- Ano
- 2024
- Nível
- Superior
contendo o conteúdo da página solicitada ou uma exceção como
é denominada- A

- B

- C

- D

- E

contendo o conteúdo da página solicitada ou uma exceção como
é denominada




GabaritoE — [imagem]
Gabarito: letra E. No framework Django, a função Python que recebe uma requisição web e retorna um objeto HttpResponse contendo o conteúdo da página solicitada, ou uma exceção como Http404, é denominada view. A view é o coração do padrão MVT (Model-View-Template) do Django, responsável por processar a requisição, executar a lógica de negócio e devolver a resposta HTTP ao cliente.
O Django adota o padrão arquitetural MVT (Model-View-Template), uma variação do MVC (Model-View-Controller). Nesse padrão, a view exerce o papel que no MVC tradicional é dividido entre o controller e a view: ela recebe a requisição HTTP (um objeto HttpRequest), contém a lógica de negócio (como consultas ao banco de dados via ORM), e retorna uma resposta HTTP (normalmente um objeto HttpResponse, que pode ser gerado a partir de um template HTML).
A definição clássica de uma view no Django é exatamente a descrita no enunciado: uma função (ou classe, no caso de class-based views) que recebe um objeto HttpRequest como primeiro parâmetro e retorna um objeto HttpResponse. Quando algo dá errado — por exemplo, um registro não é encontrado no banco — a view pode lançar exceções específicas do Django, como Http404, que o framework converte automaticamente em uma resposta HTTP 404 (Not Found). Outras exceções comuns incluem PermissionDenied (HTTP 403) e HttpResponseRedirect (que, apesar do nome, é uma subclasse de HttpResponse usada para redirecionamentos).
Na prática, uma view simples pode ser definida assim:
from django.http import HttpResponse
def minha_view(request):
return HttpResponse("Olá, mundo!")Essa função recebe o objeto request e retorna um HttpResponse. Se quiséssemos retornar um erro 404, poderíamos usar:
from django.http import Http404
def minha_view(request):
raise Http404("Página não encontrada")O Django também oferece as class-based views (views baseadas em classes), que são uma alternativa mais estruturada e reutilizável às views baseadas em funções. Elas seguem o mesmo princípio: recebem a requisição e retornam uma resposta, mas organizam a lógica em métodos como get(), post(), etc.
A distinção que importa aqui é entre view e os demais componentes do Django: o template é responsável apenas pela apresentação (HTML), o model representa os dados, e a URLconf faz o roteamento das requisições para as views. A view é o único componente que "conversa" diretamente com a requisição e a resposta HTTP.
A pegadinha que a banca explora neste tema é confundir a view com outros conceitos do Django, como template, model, ou até mesmo com o objeto HttpRequest. O candidato que não domina a terminologia do framework pode facilmente marcar uma alternativa errada. A palavra-chave no enunciado é "função Python que recebe uma requisição web e retorna um objeto contendo o conteúdo da página" — isso descreve exatamente o papel da view.
Guarde a fronteira entre view (processa requisição e retorna resposta) e template (apenas renderiza HTML): é exatamente nela que as alternativas se dividem.
Esta alternativa provavelmente se refere a um conceito como template ou model. O template no Django é apenas a camada de apresentação: ele recebe um contexto (dicionário de dados) e renderiza uma string HTML. O template não recebe a requisição web diretamente nem retorna um HttpResponse — ele é chamado pela view para gerar o conteúdo. Já o model representa a estrutura dos dados no banco e não tem relação com o ciclo requisição-resposta.
Esta alternativa provavelmente se refere a URLconf ou roteador. A URLconf é o módulo que mapeia padrões de URL para views. Ela não recebe a requisição e retorna uma resposta; ela apenas direciona a requisição para a view correta com base na URL solicitada. O roteamento é uma etapa anterior ao processamento pela view.
Esta alternativa provavelmente se refere a middleware. O middleware no Django é um componente que processa a requisição e a resposta globalmente, antes e depois da view. Ele pode modificar a requisição, a resposta, ou interromper o processamento. No entanto, o middleware não é a função que recebe a requisição e retorna o conteúdo da página — ele é um "filtro" que envolve a view.
Esta alternativa provavelmente se refere a form ou serializer. Os forms no Django são usados para validar e processar dados de formulários HTML, enquanto os serializers (do Django REST Framework) convertem dados entre formatos como JSON e objetos Python. Nenhum deles é a função que recebe a requisição web e retorna o conteúdo da página.
A alternativa correta é view. A view é exatamente a função Python que recebe um objeto HttpRequest e retorna um objeto HttpResponse (ou uma exceção como Http404). Ela é o componente central do padrão MVT do Django, responsável por processar a requisição, executar a lógica de negócio e devolver a resposta HTTP ao cliente. A definição do enunciado é a definição canônica de view na documentação oficial do Django.
Para fixar, lembre-se do fluxo no Django: URLconf → View → Template → HttpResponse. A view é o "meio do caminho": ela recebe a requisição, usa o model para buscar dados, renderiza o template e retorna a resposta. Se a alternativa falar de "função que recebe requisição e retorna resposta", é view. Se falar de "renderização de HTML", é template. Se falar de "mapeamento de URLs", é URLconf.
Gabarito: letra E
Link permanente: /questoes/ce191222