English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Como mencionado anteriormente, podemos usar cookies no cliente do Web application para armazenar uma grande quantidade de dados úteis. Nós já vimos que podemos usar cookies do cliente para armazenar vários dados, no Web application isso é muito útil. Isso leva à importância de salvar dados e alguns problemas de segurança.
Por segurança, o Django tem um framework de sessão para lidar com cookies. A sessão é usada para abstrair a recebimento e envio de cookies, os dados são armazenados no servidor (como um banco de dados), e o cookie do cliente apenas tem um ID de sessão de identificação. A sessão também ajuda a evitar que o navegador do usuário esteja configurado para 'não aceitar' cookies.
No Django, para ativar a sessão no arquivo settings.py, adicionamos algumas linhas às opções MIDDLEWARE_CLASSES e INSTALLED_APPS. Isso deve ser feito após a criação do projeto, mas é sempre fácil saber, então MIDDLEWARE_CLASSES deve ser semelhante ao seguinte -
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 'django.contrib.sessions.middleware.SessionMiddleware'
INSTALLED_APPS deve conter -
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 'django.contrib.sessions'
Por padrão, o Django salva as informações de sessão no banco de dados (na tabela django_session ou em um conjunto), mas pode ser armazenado de outras maneiras, semelhantes a configurações de motores: em arquivos ou em cache.
Quando a sessão estiver ativada, cada solicitação (em qualquer função do Django que tenha o primeiro parâmetro) tem um atributo de sessão (dicionário).
Vamos criar um exemplo simples para ver como criar e salvar uma sessão. Nós já construímos um sistema de login simples (veja o capítulo de tratamento de formulários do Django e o capítulo de tratamento de cookies do Django). Vamos salvar o nome de usuário no cookie. Portanto, se não nos deslogarmos, ao acessarmos a página de login, não veremos o formulário de login. Ao usar cookies para salvar no servidor do Django, o tratamento de cookies é mais seguro.
Para isso, vamos primeiramente modificar o código de login para salvar o username no servidor-
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 def login(request): username = 'not logged in' if request.method == 'POST': MyLoginForm = LoginForm(request.POST) if MyLoginForm.is_valid(): username = MyLoginForm.cleaned_data['username'] request.session['username'] = username else: MyLoginForm = LoginForm() return render(request, 'loggedin.html', {'username': username})
então vamos criar a visão correspondente ao formulário de login, se o cookie estiver configurado, o formulário não será exibido -
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 def formView(request): if request.session.has_key('username'): username = request.session['username'] return render(request, 'loggedin.html', {'username': username}) else: return render(request, 'login.html', {})
Agora, vamos modificar o arquivo url.py e alterar o URL, para que o novo visão de combinaçã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ê verá a seguinte página−
será redirecionado para a página abaixo -
Agora, se você tentar acessar novamente/myapp/conexão, ela redirecionará diretamente para a segunda tela.
Vamos criar uma visão de logout simples para limpar os cookies.
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 def logout(request): try: del request.session['username'] except: pass return HttpResponse("<strong>Você foi deslogado.</strong>")/strong>")
e em myapp/url.py com correspondência URL de logout
# Nome do arquivo: example.py # Copyright: 2020 Por w3codebox # Autor por: pt.oldtoolbag.com # Data: 2020-08-08 url(r'^logout/', 'logout', name = 'logout'),
Agora, se visitar/myapp/logout,obterá a seguinte página-
se visitar novamente /myapp/connection,a forma de login obtida (tela1)。
Já vimos como armazenar e acessar a sessão, aqui está um bom exemplo de entender as propriedades de sessão da solicitação e outras operações úteis, como:
set_expiry (value) − Definir o tempo de expiração da sessão
get_expiry_age() − Retornar o número de segundos até a expiração da sessão
get_expiry_date() − Retornar a data de expiração da sessão atual
clear_expired() − Remover armazenamento de sessão expirado da sessão
get_expire_at_browser_close() − Retornar true ou false, dependendo se o cookie de sessão do usuário já expirou ao fechar o navegador do usuário