Enviando respostas com HttpResponse
No Django, o envio de respostas ao cliente é realizado através da classe HttpResponse
django.http
views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello")
No arquivo urls.py
from django.urls import path
from hello import views
urlpatterns = [
path("", views.index),
]
Essa função envia um texto para a instância de HttpResponse
HttpResponse
HttpResponse.__init__(content=b'', content_type=None, status=200, reason=None, charset=None, headers=None)
Os parâmetros da classe HttpResponse
: conteúdo da resposta como uma string de bytes. Caso outro tipo de dado seja fornecido, ele será convertido automaticamente.content
: tipo MIME da resposta, utilizado para definir o cabeçalho HTTPcontent_type
. Se não for especificado, o Django assume o padrãoContent-Type
combinado com a configuraçãotext/html
, resultando em:DEFAULT_CHARSET
.text/html; charset=utf-8
: codificação do conteúdo. Por padrão, o Django tenta extrair a codificação do parâmetrocharset
e, caso não consiga, utiliza o valor da configuraçãocontent_type
.DEFAULT_CHARSET
: código de status HTTP da resposta. O valor padrão é 200 (OK).status
: frase associada ao código de status.reason
: cabeçalhos personalizados para a resposta, fornecidos como um dicionário.headers
Além dos parâmetros fornecidos, a classe HttpResponse
: conteúdo da resposta em formato de bytes.content
: cabeçalhos da resposta como um dicionário.headers
: codificação utilizada no conteúdo.charset
: código de status HTTP.status_code
: frase associada ao código de status.reason_phrase
Exemplos práticos
Adição de cabeçalhos personalizados
Cabeçalhos personalizados podem ser incluídos para enviar informações adicionais ao cliente. No exemplo abaixo, um cabeçalho SecretCode
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello www.programicio.com!", headers={"SecretCode": "21234567"})
Apesar de o cabeçalho SecretCode
Definição de Código de Status
from django.http import HttpResponse
def index(request):
return HttpResponse("Ocorreu um erro", status=400, reason="Dados incorretos")
Nesse caso, o servidor retorna o status 400 junto com a mensagem "Dados incorretos" no cabeçalho da resposta.
Configuração do tipo de conteúdo e codificação
O cabeçalho Content-Type
from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>Hello</h1>", content_type="text/plain", charset="utf-8")
Mesmo com a presença da tag <h1>
Content-Type
text/plain