Biscoitos Django

Resumo : neste tutorial, você aprenderá sobre cookies e como configurar e obter cookies em aplicações web Django.

Introdução aos cookies HTTP

Quando um servidor web interage com muitos navegadores diferentes ao mesmo tempo, ele precisa identificar de qual navegador veio uma solicitação específica.

Como a solicitação/resposta HTTP não tem estado, todos os navegadores da Web parecem idênticos. Para identificar os navegadores web, o servidor web utiliza cookies.

Tecnicamente, os cookies são arquivos de texto com pequenos dados que o servidor da web envia para um navegador da web. O navegador da web pode armazenar o cookie e enviá-lo de volta ao servidor da web em solicitações subsequentes.

Observe que o navegador da web apenas envia de volta cookies que foram originalmente definidos pelo mesmo servidor da web.

Ao comparar os cookies, o servidor web pode identificar que as solicitações vêm do mesmo navegador.

Os cookies têm datas de validade. Alguns podem durar anos, enquanto outros são de curto prazo e expiram assim que você fecha os navegadores da web.

Biscoitos Django

Django permite definir, ler e excluir cookies através de métodos do HttpResponseobjeto.

Configurando um cookie

Para definir um cookie, você usa o set_cookie()método do HttpResponseobjeto:

set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=NoneLinguagem de código:  Python  ( python )

Neste método:

  • keyé o nome do cookie.
  • valueé uma string que representa o valor do cookie.
  • max_agepode ser um objeto timedelta ou um número inteiro que indica o número de segundos que especifica quanto tempo o cookie deve expirar. O padrão é Nenhum, que expira o cookie assim que você fecha o navegador.
  • expiresdeve ser um objeto datetime em UTC ou uma string no formato "Wdy, DD-Mon-YY HH:MM:SS GMT".
  • Use  secure=True quando quiser que o navegador da web envie o cookie ao servidor se a solicitação for apenas HTTPS.
  • Use  httponly=True se não quiser que o JavaScript do lado do cliente acesse o cookie.
  • Use  samesite='None' (string) para permitir que o cookie seja enviado com todas as solicitações do mesmo site e entre sites.

Excluindo um cookie

Para excluir um cookie, você usa o delete_cookie()método do HttpResponseobjeto:

delete_cookie(key, path='/', domain=None, samesite=None)Linguagem de código:  Python  ( python )

O delete_cookie()método exclui um cookie com um nome especificado. Falha silenciosamente se a chave não existir.

Observe que o caminho e o domínio devem ter os mesmos valores usados ​​no set_cookie()método ou o cookie não será excluído.

Lendo biscoitos

Para acessar todos os cookies enviados pelo navegador, você usa a COOKIESpropriedade do HttpRequestobjeto.

request.COOKIESLinguagem de código:  Python  ( python )

Para acessar um cookie por uma chave, você passa o nome do cookie ao request.COOKIESdicionário. Por exemplo:

request.COOKIES['cocoa']Linguagem de código:  Python  ( python )

Se o cookie 'cocoa'não existir, o Django irá gerar um erro.

Para evitar o erro, você pode usar o get()método do dicionário para obter um cookie, se ele existir, ou obter um valor padrão, caso contrário. Por exemplo:

request.COOKIES.get('cocoa',1)Linguagem de código:  Python  ( python )

O código retornará 1 se o cookie com o nome 'cocao'não existir.

Exemplo de cookies Django

Usaremos um cookie para armazenar se o navegador visitou o site. Quando o visitante visitar o site pela primeira vez, será exibida uma mensagem:

Welcome to my website!Linguagem de código:  texto simples  ( texto simples )

E a partir da segunda vez, ele verificará o cookie e mostrará a seguinte mensagem se o cookie com o nome visitedestiver disponível:

Welcome back!Linguagem de código:  texto simples  ( texto simples )

Primeiro, defina uma nova entrada no urlpatternsarquivo urls.pydo seu aplicativo:

urlpatterns = [
    path('', views.home, name='home'),
]Linguagem de código:  Python  ( python )

Ao abrir o http://127.0.0.1:8000/, o Django executará a home() função no views.pyarquivo.

Segundo, defina a home()função no views.pyarquivo:

def home(request):
    visited = request.COOKIES.get('visited')
    if visited:
        response = HttpResponse('Welcome back!')
    else:
        response = HttpResponse('Welcome to my website!')
        response.set_cookie('visited', True)

    return responseLinguagem de código:  Python  ( python )

Na home()função, lemos o cookie com o nome visited. Caso o cookie com o nome visitado não exista, a página inicial exibirá a mensagem:

Welcome to my website!Linguagem de código:  texto simples  ( texto simples )

Caso contrário, mostrará a mensagem:

Welcome back!Linguagem de código:  texto simples  ( texto simples )

Além disso, definimos o cookie visitado como True.

Se você visualizar o cookie no navegador da web, verá o cookie com o nome visitado assim:

exemplo de cookies Django

Resumo

  • Um cookie é um dado que o servidor web envia para o navegador e o navegador pode armazená-lo ou não.
  • O navegador envia o cookie de volta ao servidor web nas solicitações subsequentes no cabeçalho da solicitação HTTP.
  • Use a set_cookie()função do HttpResponseobjeto para definir um cookie no Django.
  • Use o delete_cookie()método do HttpResponseobjeto para excluir um cookie.
  • Use o request.COOKIESdicionário para ler todos os cookies enviados pelo navegador.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *