English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tratamento de Cookies Django

Às vezes, pode ser necessário armazenar alguns dados do visitante conforme exigido pelo seu aplicativo web em cada site. Sempre lembre-se de que os cookies são armazenados no cliente e, dependendo do nível de segurança do seu navegador cliente, configure o tempo de vida do cookie, às vezes pode não ser necessário.

Para explicar como o Django lida com cookies, vamos criar um sistema que utiliza a funcionalidade de login criada anteriormente. O sistema permitirá que você faça login por x minutos, após este período, o aplicativo automaticamente deslogará suas informações de login.

Para isso, é necessário configurar dois cookies: last_connection e username.

Primeiro, vamos alterar a visão de login para armazenar o nome de usuário e cookies de última conexão −

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
from django.template import RequestContext
 def login(request):
    username = "not logged in"
    se request.method == "POST":
       #Get the posted form
       MyLoginForm = LoginForm(request.POST)
    if MyLoginForm.is_valid():
       username = MyLoginForm.cleaned_data['username']
    else:
       MyLoginForm = LoginForm()
    response = render_to_response(request, 'loggedin.html', {"username": username}, 
       context_instance = RequestContext(request))
    response.set_cookie('last_connection', datetime.datetime.now())
    response.set_cookie('username', datetime.datetime.now())
 
    return response

Como no exemplo anterior, o cookie é configurado chamando o método setcookie, não a resposta da solicitação, também observe que todos os valores dos Cookies são retornados como strings.

Vamos criar uma FormView para o formulário de login, não mostraremos o formulário, se o Cookie estiver configurado e10seconds -

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
def formView(request):
    if 'username' in request.COOKIES and 'last_connection' in request.COOKIES:
       username = request.COOKIES['username']
       last_connection = request.COOKIES['last_connection']
       last_connection_time = datetime.datetime.strptime(last_connection[:-7], 
          "%Y-%m-%d %H:%M:%S")
       if (datetime.datetime.now(), - last_connection_time).seconds < 10:
          return render(request, 'loggedin.html', {"username": username})
       else:
          return render(request, 'login.html', {})
 
    else:
       return render(request, 'login.html', {})

Você pode acessar os cookies que configurou no visão formView, através da propriedade de classe Cookies (dicionário) da solicitação.

Agora, modifique o arquivo url.py para alterar a URL, pare com a nova visão -

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
from django.conf.urls import patterns, url
 from django.views.generic import TemplateView
 urlpatterns = patterns('myapp.views',
    url(r'^connection/','formView', name = 'loginform'),
    url(r'^login/', 'login', name = 'login'))

ao acessar /myapp/conexão,você entrará na seguinte página-

Após o envio, você será redirecionado para a seguinte interface -

Agora, se você estiver10segundos /myapp/conexão Uma vez, você será redirecionado diretamente para a segunda tela. Se você visitar novamente /myapp/conexão Fora deste intervalo, você receberá o formulário de login (tela1)。