Django Cookies處理

有時(shí)候,可能要按您的Web應(yīng)用程序的要求存儲(chǔ)訪問者一些數(shù)據(jù)在每個(gè)站點(diǎn)。始終牢記,那cookies被保存在客戶端,并根據(jù)您的客戶端瀏覽器的安全級(jí)別,設(shè)置cookie 存活的時(shí)間,有時(shí)候可能不需要。

為了說(shuō)明在Django如何cookie處理,讓我們創(chuàng)建一個(gè)使用之前創(chuàng)建的登錄功能的系統(tǒng)。 系統(tǒng)將讓你登錄為時(shí)間x分鐘,在此時(shí)間之后,應(yīng)用程序?qū)?huì)自動(dòng)注銷你的登陸信息。

對(duì)于這一點(diǎn),需要設(shè)置兩個(gè)cookie:last_connection和username。

首先,讓我們改變登錄視圖以存儲(chǔ)用戶名和last_connection cookies ?

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.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

正如在上面這個(gè)視圖,設(shè)置cookie是調(diào)用setcookie方法完成的,而不是請(qǐng)求響應(yīng)的, 還要注意所有Cookie的值是作為字符串返回的。

讓我們?yōu)榈卿洷韱蝿?chuàng)建一個(gè)FormView,我們將不會(huì)顯示的表單,如果Cookie設(shè)置并且在10秒內(nèi) ?

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.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', {})

可以在 formView 視圖上訪問您設(shè)置Cookie,通過請(qǐng)求COOKIES類屬性(字典)完成。

現(xiàn)在修改url.py文件更改URL,配對(duì)新的視圖 ?

# Filename : example.py
# Copyright : 2020 By Nhooo
# Author by : www.soo66.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'))

當(dāng)訪問 /myapp/connection,您將進(jìn)入以下頁(yè)面- 瀏覽器運(yùn)行結(jié)果

提交后會(huì)重定向到以下界面 -

瀏覽器運(yùn)行結(jié)果

現(xiàn)在,如果你在10秒內(nèi)訪問 /myapp/connection 一遍, 會(huì)得到直接重定向到第二個(gè)屏幕。如果你再次訪問 /myapp/connection 超出這個(gè)范圍,將會(huì)得到的登錄表單(屏幕1)。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清