處理 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