如何在 Django 處理 Cookie——設置 Cookie 的方法

處理 cookies 是 web 應用的重要概念。Django 提供了一種與 cookies 交互的簡單方法。Cookies 允許我們存儲和檢索會話中保存的數據。會話和 Cookies 彼此不同,我們將在後續教程中討論。這些 cookies 是有時間限制的;這些將在指定時間後自動刪除。

當我們訪問任何網站並登錄到該頁面時,它會要求存儲我們的用戶 id 和密碼,並根據我們之前登錄的會話自動填寫一些詳細信息。所有這些過程都是由 Cookie 完成的。此外,我們可以將 cookie 存儲在客戶端計算機上,以使用戶交互更容易。

本教程將討論我們如何管理Django中的 cookie ,以及它們為什麼在互聯網上有用。我們還將討論如何使用伺服器創建 cookies。

讓我們來介紹一下 Cookie。

cookie 也稱為 HTTP cookies。它是一個由網路瀏覽器創建的小文本文件,並根據特定的網路伺服器請求進行維護。文本文件保存在計算機本地,大多數瀏覽器將顯示在隱私和安全設置下生成的 cookies。

請求由用戶使用 HTTP 協議發送,但這是無狀態的。識別用戶是新用戶還是以前訪問過該網站沒有幫助。

cookie 包含用於標識用戶的唯一會話 id 和網站上下文的其他相關信息。當我們登錄網站時,網站會發送帶有唯一用戶身份的 cookie。

Cookies 提供了許多 HTTP 無法提供的功能。

讓我們了解一下 cookie 在互聯網上是如何工作的。

  • 瀏覽器向伺服器發送請求。
  • 伺服器向瀏覽器發送響應以及一個或多個 cookies。
  • 瀏覽器或客戶端收到 cookies 並將其保存為文本文件。每次用戶發送請求時,瀏覽器都會將此 cookie 發送到伺服器,直到 cookie 過期。
  • cookie 過期後會從瀏覽器中刪除。

Cookies 有多種用途,如登錄網站或網上購物。許多公司使用 as 來跟蹤用戶偏好。不同的網站根據其需求使用不同的 Cookies。

當我們登錄到一個電子商務網站或臉書而沒有註銷時,它會在我們下次訪問我們的帳戶時保持簽名狀態。Cookies 用於實現這一點(包含用戶會話信息)。

Cookies 也用於幾個電子商務網站的產品推薦。

cookie 屬性可以執行兩個任務-它可以為用戶計算機設置 cookie 並訪問這些 cookie。讓我們詳細了解這些概念。

此屬性用於設置伺服器發送給用戶瀏覽器以保存數據的 cookies。下面是 cookie()方法的語法。


set_cookie(cookie_name, value, max_age = None, expires = None)

名稱- 指定 cookie 名稱。

值- 用於指定我們要存儲在用戶計算機中的特定值。

max_age – 用於定義 Cookie 的時限。如果未指定時間限制,它將一直處於活動狀態,直到瀏覽器關閉。

Expires – 是一個格式為「Wdy DD-Mon-YY HH:MM:SS GMT」或日期時間的字元串。如果過期是日期時間對象,將確定最大年齡。

伺服器使用 get cookies 來讀取先前發送的 cookies 數據。我們可以使用以下語法。


request.COOKIES['cookie_name']

讓我們看看如何手動設置 Django cookies。

在下面的步驟中,我們將使用 Django 設置 cookie。創建所有需要的配置,並在視圖中包含以下代碼


def setcookie(request):
    html = HttpResponse("<h1>Welcome to Django Website</h1>")
    html.set_cookie('Django', 'We are setting a cookie', max_age = None)
    return html

現在,將此視圖映射到 urls.py。


path('setcookie', views.setcookie)

在這裡,我們將為 get cookies 編寫視圖。

view.py


def getcookie(request):
    show = request.COOKIES['Django?]
    html = "<center> New Page <br>{0}</center>".format(show)
    return HttpResponse(html)

・T0️ urls.py ・T1️


path('getcookie', views.showcookie),

輸出:

上述代碼的解釋-

在上面的 view.py 中,我們使用了 HttpResponse 方法,該方法向屏幕顯示任何輸出。

我們在單獨的函數中定義 cookie-第一個函數將 COOKIE 設置到用戶的計算機,第二個函數將變數添加到 COOKIE 中,用於顯示或接收已經設置的 COOKIE。

現在,使用以下命令運行伺服器。


python manage.py runserver

我們可以修改已定義的 cookie。讓我們看看下面的例子。


def updating_cookie(request):
    html = HttpResponse("We are updating  the cookie which is set before")
    html.set_cookie('JavaTpoint','Updated Successfully')
    return html

更新完 cookie 後,我們需要將其附加到 urls.py 文件中。


path('updating_cookie', views.updating_cookie),

現在,我們運行伺服器並訪問下面的頁面。

輸出:

我們可以使用重定向功能來更新 cookie,而不是使用 Httpresponse 。然而,這裡我們將使用 set cookies 函數。

現在,我們將使用渲染函數添加更新。

現在,我們將學習如何刪除已經放置在用戶計算機中的 cookies。

我們知道,有一個可選參數 max_age 默認刪除了 cookie 會話。

為了刪除 cookie,我們在 views.py 文件中添加了以下代碼。


def deleting_cookie(request):
    html = HttpResponse("Deleting the cookie which is set")
    html.delete_cookie('JavaTpoint','Updated Successfully')
    return html

現在,我們將此視圖添加到 urls.py 文件中。


path('delete_cookie',views.deleting_cookie),

輸出:

「expires」屬性可用於處理 cookie 會話的結束。我們可以修改 expire 函數,並知道如何刪除 cookie。讓我們看看下面的語法。


response.cookies['cookie_name']['expires'] = datetime.today() + timedelta(days= number_of_days)

Cookies 由網站根據用戶請求發送。因此,伺服器會為每個請求獲取一個 cookie。Django 提供了訪問 cookie 的簡單方法。

  • 使用請求。COOKIES[]

我們已經在上面的部分討論過了。

  • 使用請求。COOKIES.get()

在請求對象上使用這個方法,我們可以很容易地得到特定的值。下面是這個方法的語法。


COOKIES.get('cookie_name', 'value')

我們需要重定向(),所以現在導入它。

我們需要重定向(),所以現在導入它。

Cookie 代碼


def setcookie(request):
    if request.COOKIES.get('visits') is not None:
        value = request.COOKIES.get('visits')
        text = request.COOKIES.get('JavaTpoint')
        html = HttpResponse("

# {0} 
您已請求此頁面{1}次

".format(text, value))
        html.set_cookie('visits', int(value) + 1)
        return html
    else:
        return redirect('/setcookie')

輸出

Python 設置文件定義了啟用和禁用哪些 cookies。會話變數在用於處理會話 cookies 的設置中可用。我們可以通過設置、更新和刪除 cookie 來手動啟用和禁用 cookie。如果需要,可以將會話級 cookies 設置為 true。

默認情況下,它們被設置為 FALSE。Cookies 是加密的,所以這些相當安全。會話 cookie 可用於跟蹤用戶訪問特定網站的次數。

以下是一些你應該記住的要點。

  • Cookies 從不用於存儲密碼等敏感數據。原因是 cookies 存儲在純文本文件中,任何人都可以讀取這些敏感數據。
  • 許多瀏覽器不允許保存超過 4kb 的 cookies 數據。
  • 假設一個網站放了 10 個 4kb 大小的 cookies。一旦將 cookie 放入用戶的計算機中,它將隨每個請求一起發送到伺服器。每次用戶請求伺服器時,它必須額外發送 40kb 的數據。
  • 用戶可以禁用接受 cookie 的功能,或者完全永久刪除 cookie。

Cookie 有優點,也有缺點。

  • Cookie 數據可能會被濫用。
  • 我們可以輕鬆跟蹤用戶。
  • 客戶端可以刪除 cookies。
  • cookie 可以存儲 4096 位元組的數據。
  • 瀏覽器和伺服器都可以存儲 cookies。

我們已經討論了 Django cookies 的所有重要概念,以及我們如何在項目中使用它們。我們已經定義了如何設置、獲取、更新和刪除 cookies。cookies 有助於識別用戶和快速檢索數據。系統並不總是去資料庫,搜索它,將結果返回給用戶。


原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127057.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相關推薦

  • 如何在PyCharm中安裝OpenCV?

    本文將從以下幾個方面詳細介紹如何在PyCharm中安裝OpenCV。 一、安裝Python 在安裝OpenCV之前,請確保已經安裝了Python。 如果您還沒有安裝Python,可…

    編程 2025-04-29
  • ArcGIS更改標註位置為中心的方法

    本篇文章將從多個方面詳細闡述如何在ArcGIS中更改標註位置為中心。讓我們一步步來看。 一、禁止標註智能調整 在ArcMap中設置標註智能調整可以自動將標註位置調整到最佳顯示位置。…

    編程 2025-04-29
  • 解決.net 6.0運行閃退的方法

    如果你正在使用.net 6.0開發應用程序,可能會遇到程序閃退的情況。這篇文章將從多個方面為你解決這個問題。 一、代碼問題 代碼問題是導致.net 6.0程序閃退的主要原因之一。首…

    編程 2025-04-29
  • 如何在Python中實現平方運算?

    在Python中,平方運算是常見的數學運算之一。本文將從多個方面詳細闡述如何在Python中實現平方運算。 一、使用乘法運算實現平方 平方運算就是一個數乘以自己,因此可以使用乘法運…

    編程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一個類的構造函數,在創建對象時被調用。在本篇文章中,我們將從多個方面詳細討論init方法的作用,使用方法以及注意點。 一、定義init方法 在Pyth…

    編程 2025-04-29
  • Python創建分配內存的方法

    在python中,我們常常需要創建並分配內存來存儲數據。不同的類型和數據結構可能需要不同的方法來分配內存。本文將從多個方面介紹Python創建分配內存的方法,包括列表、元組、字典、…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 用不同的方法求素數

    素數是指只能被1和自身整除的正整數,如2、3、5、7、11、13等。素數在密碼學、計算機科學、數學、物理等領域都有著廣泛的應用。本文將介紹幾種常見的求素數的方法,包括暴力枚舉法、埃…

    編程 2025-04-29
  • 使用Vue實現前端AES加密並輸出為十六進位的方法

    在前端開發中,數據傳輸的安全性問題十分重要,其中一種保護數據安全的方式是加密。本文將會介紹如何使用Vue框架實現前端AES加密並將加密結果輸出為十六進位。 一、AES加密介紹 AE…

    編程 2025-04-29
  • 如何在Python中找出所有的三位水仙花數

    本文將介紹如何使用Python語言編寫程序,找出所有的三位水仙花數。 一、什麼是水仙花數 水仙花數也稱為自戀數,是指一個n位數(n≥3),其各位數字的n次方和等於該數本身。例如,1…

    編程 2025-04-29

發表回復

登錄後才能評論