English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Parfois, il peut être nécessaire de stocker certaines données des visiteurs dans votre application Web selon les exigences. N'oubliez jamais que les cookies sont stockés sur le client et que le temps de vie des cookies est configuré en fonction du niveau de sécurité de votre navigateur client, ce qui peut ne pas être nécessaire parfois.
Pour expliquer comment Django gère les cookies, créons un système utilisant la fonction de connexion créée précédemment. Le système vous permettra de vous connecter pendant x minutes, après quoi l'application se déconnectera automatiquement de vos informations de connexion.
Pour cela, il faut configurer deux cookies : last_connection et username.
Tout d'abord, changeons la vue de connexion pour stocker le nom d'utilisateur et les cookies last_connection −
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 2020-08-08 from django.template import RequestContext def login(request): username = "not logged in" if 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
正如在上面这个视图,设置cookie是通过调用setcookie方法完成的,而不是通过请求响应的,还要注意所有Cookie的值都是作为字符串返回的。
让我们为登录表单创建一个FormView,我们将不会显示的表单,如果Cookie设置并且在10秒内 −
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 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', {})
Vous pouvez accéder à vos cookies définis sur la vue formView, via la propriété de la classe request COOKIES (dictionnaire).
Maintenant, modifiez le fichier url.py pour changer l'URL, associez une nouvelle vue −
# Fichier : example.py # Copyright : 2020 By w3codebox # Auteur par : fr.oldtoolbag.com # Date : 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'))
Lors de l'accès /myapp/connection, vous serez redirigé vers la page suivante-
Après soumission, vous serez redirigé vers l'une des interfaces suivantes -
Maintenant, si vous êtes dans10secondes d'accès /myapp/connection Une fois, vous serez redirigé directement vers le deuxième écran. Si vous visitez à nouveau /myapp/connection Hors de cette gamme, vous obtiendrez le formulaire de connexion (écran1)。