最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django操作cookie的實現(xiàn)

 更新時間:2021年05月26日 10:55:15   作者:Silent丿丶黑羽  
很多網(wǎng)站都會使用Cookie。本文主要介紹了Django操作cookie的實現(xiàn),結合實例形式詳細分析了Django框架針對cookie操作的各種常見技巧與操作注意事項,需要的朋友可以參考下

前言

cookie:在網(wǎng)站中,http請求是無狀態(tài)的。也就是說即使第一次和服務器連接后并且登錄成功后,第二次請求服務器依然不能知道當前請求是哪個用戶。cookie的出現(xiàn)就是為了解決這個問題,第一次登錄后服務器返回一些數(shù)據(jù)(cookie)給瀏覽器,然后瀏覽器保存在本地,當該用戶發(fā)送第二次請求的時候,就會自動的把上次請求存儲的cookie數(shù)據(jù)自動的攜帶給服務器,服務器通過瀏覽器攜帶的數(shù)據(jù)就能判斷當前用戶是哪個了。cookie存儲的數(shù)據(jù)量有限,不同的瀏覽器有不同的存儲大小,但一般不超過4KB。因此使用cookie只能存儲一些小量的數(shù)據(jù)。

cookie的特點:

    ⑴以鍵值對方式進行存儲
    ⑵通過瀏覽器訪問一個網(wǎng)站時,會將瀏覽器存儲的跟網(wǎng)站相關的所有cookie信息發(fā)送給該網(wǎng)站的服務器
    ⑶cookie是基于域名安全的
    ⑷cookie是有過期時間的,如果不指定,默認關閉瀏覽器之后cookie就會過期

Cookie的不可跨域名性

1、很多網(wǎng)站都會使用Cookie。例如,Google會向客戶端頒發(fā)Cookie,Baidu也會向客戶端頒發(fā)Cookie。那瀏覽器訪問Google會不會也攜帶上Baidu頒發(fā)的Cookie呢?或者Google能不能修改Baidu頒發(fā)的Cookie呢

2、答案是否定的。Cookie具有不可跨域名性。根據(jù)Cookie規(guī)范,瀏覽器訪問Google只會攜帶Google的Cookie,而不會攜帶Baidu的Cookie。Google也只能操作Google的Cookie,而不能操作Baidu的Cookie

3、Cookie在客戶端是由瀏覽器來管理的。瀏覽器能夠保證Google只會操作Google的Cookie而不會操作Baidu的Cookie,從而保證用戶的隱私安全。瀏覽器判斷一個網(wǎng)站是否能操作另一個網(wǎng)站Cookie的依據(jù)是域名。Google與Baidu的域名不一樣,因此Google不能操作Baidu的Cookie

4、需要注意的是,雖然網(wǎng)站images.google.com與網(wǎng)站www.google.com同屬于Google,但是域名不一樣,二者同樣不能互相操作彼此的Cookie

設置cookie

設置cookie是設置值給瀏覽器的。因此我們需要通過response的對象來設置,設置cookie可以通過response.set_cookie來設置,這個方法的相關參數(shù)如下:

  • key:這個cookie的key。
  • value:這個cookie的value。
  • max_age:最長的生命周期。單位是秒。
  • expires:過期時間。跟max_age是類似的,只不過這個參數(shù)需要傳遞一個具體的日期,比如datetime或者是符合日期格式的字符串。如果同時設置了expires和max_age,那么將會使用expires的值作為過期時間。
  • path:對域名下哪個路徑有效。默認是對域名下所有路徑都有效。
  • domain:針對哪個域名有效。默認是針對主域名下都有效,如果只要針對某個子域名才有效,那么可以設置這個屬性.
  • secure:是否是安全的,如果設置為True,那么只能在https協(xié)議下才可用。
  • httponly:默認是False。如果為True,那么在客戶端不能通過JavaScript進行操作。

獲取cookie

獲取瀏覽器發(fā)送過來的cookie信息。可以通過request.COOKIES來或者。這個對象是一個字典類型。比如獲取所有的cookie,那么示例代碼如下:

cookies = request.COOKIES
for cookie_key,cookie_value in cookies.items():
   print(cookie_key,cookie_value)

刪除cookie

通過delete_cookie即可刪除cookie。實際上刪除cookie就是將指定的cookie的值設置為空的字符串,然后使用將他的過期時間設置為0,也就是瀏覽器關閉后就過期。

實戰(zhàn)案例

我們先在uris.py中寫入三個路由,一個設置cookie路由,一個獲取cookie路由,一個刪除cookie路由,代碼如下:

# 項目根路由
urlpatterns = [
    path('cookie_app/', include('cookie_app.urls')),
]

# cookie_app.urls.py
urlpatterns = [
    path('set_cookie/', views.set_cookie),
    path('get_cookie/', views.get_cookie),
    path('delete_cookie/', views.delete_cookie),
]

接著我們在views.py視圖中寫入對應的視圖,代碼如下:

def set_cookie(request):
    """設置cookie"""
    response = HttpResponse('success')
    response.set_cookie('username', 'jkc', max_age=180)  # 設置cookie,過期時間為180秒
    return response


def get_cookie(request):
    """獲取cookie"""
    cookies = request.COOKIES
    return HttpResponse(cookies.items())


def delete_cookie(request):
    """刪除cookie"""
    response = HttpResponse('刪除cookie成功')
    response.delete_cookie('username')
    return response

接下來我們訪問url地址127.0.0.1/cookie_app/set_cookie/,打開F12,我們可以看到網(wǎng)絡請求中的response header中有set-cookie字段


我們也可以打開網(wǎng)站地址上的,如下圖


然后會出現(xiàn)彈出以下的窗口,點擊cookie


我們會查看到自己剛才設置的cookieusername,且過期時間是之前設置的3分鐘



接下來我們訪問http://127.0.0.1:8000/cookie_app/get_cookie/獲取cookie,瀏覽器頁面會返回('username', 'jkc'),我們也可以打開F12查看請求頭的信息,會發(fā)現(xiàn)請求頭中攜帶了cookie信息,如下圖


最后我們訪問http://127.0.0.1:8000/cookie_app/delete_cookie/刪除cookie,瀏覽器頁面返回刪除cookie成功,接著我們查看網(wǎng)站的cookie信息查看會發(fā)現(xiàn)username的值為空,如下圖


為什么會設置為空?我們可以查看delete_cookie方法的源碼,如下

def delete_cookie(self, key, path='/', domain=None):
    # Most browsers ignore the Set-Cookie header if the cookie name starts
    # with __Host- or __Secure- and the cookie doesn't use the secure flag.
    secure = key.startswith(('__Secure-', '__Host-'))
    self.set_cookie(
        key, max_age=0, path=path, domain=domain, secure=secure,
        expires='Thu, 01 Jan 1970 00:00:00 GMT',
    )

可以看到,它里面其實是調用了set_cookie方法,然后沒有給value賦值,默認就為''空字符串,然后設置max_age為0,代表過期時間就是現(xiàn)在,立馬就過期

到此這篇關于Django操作cookie的實現(xiàn)的文章就介紹到這了,更多相關Django操作cookie內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決python調用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題

    解決python調用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題

    這篇文章主要介紹了解決python調用自己文件函數(shù)/執(zhí)行函數(shù)找不到包問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python實現(xiàn)K-近鄰算法的示例代碼

    Python實現(xiàn)K-近鄰算法的示例代碼

    k-近鄰算法(K-Nearest Neighbour algorithm),又稱 KNN 算法,是數(shù)據(jù)挖掘技術中原理最簡單的算法。本文將介紹實現(xiàn)K-近鄰算法的示例代碼,需要的可以參考一下
    2022-09-09
  • django框架auth模塊用法實例詳解

    django框架auth模塊用法實例詳解

    這篇文章主要介紹了django框架auth模塊用法,結合實例形式詳細分析了Django框架auth模塊登錄驗證、注銷等基本操作技巧與使用注意事項,需要的朋友可以參考下
    2019-12-12
  • python如何統(tǒng)計序列中元素

    python如何統(tǒng)計序列中元素

    這篇文章主要為大家詳細介紹了python如何統(tǒng)計序列中的元素,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python?虛擬機字典dict內存優(yōu)化方法解析

    Python?虛擬機字典dict內存優(yōu)化方法解析

    這篇文章主要為大家介紹了Python?虛擬機字典dict內存優(yōu)化方法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python得到單詞模式的示例

    python得到單詞模式的示例

    今天小編就為大家分享一篇python得到單詞模式的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 給numpy.array增加維度的超簡單方法

    給numpy.array增加維度的超簡單方法

    這篇文章主要介紹了給numpy.array增加維度的超簡單方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python中使用正則表達式的方法詳解

    python中使用正則表達式的方法詳解

    這篇文章主要為大家詳細介紹了python中使用正則表達式的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python字符串運算符詳情

    python字符串運算符詳情

    這篇文章主要介紹了 python字符串運算符詳情,在編程里,用的最多的就是字符串,字符串同時也是各類數(shù)據(jù)的中轉站,下文基于python的相關資料介紹字符串運算符,需要的小伙伴可以參考一下
    2022-04-04
  • Python??處理?Pandas?DataFrame?中的行和列

    Python??處理?Pandas?DataFrame?中的行和列

    這篇文章主要介紹了Python處理Pandas?DataFrame中的行和列,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論

临海市| 苍梧县| 昌黎县| 泸溪县| 湛江市| 贵定县| 长子县| 新疆| 安达市| 海盐县| 淮阳县| 双流县| 阳新县| 庄河市| 伊吾县| 鄯善县| 历史| 彰武县| 宁都县| 宣城市| 株洲市| 东明县| 临泉县| 邯郸市| 那坡县| 长泰县| 木里| 齐河县| 呼和浩特市| 仙游县| 汝州市| 江达县| 民县| 丹巴县| 玉田县| 荆州市| 原平市| 茌平县| 乐陵市| 汝南县| 濉溪县|