一、cookie是什么
Cookie 是存盤在客戶端計算機(瀏覽器)上的文本檔案,

HTTP 是一種"無狀態"協議,這意味著每次客戶端檢索網頁時,
- 客戶端打開一個單獨的連接到 Web 服務器,
- 一個 Web 服務器可以分配一個唯一的 session 會話 ID 作為每個 Web 客戶端的 cookie,也可以向瀏覽器發送一組 Cookie,例如:姓名、年齡或識別號碼等,
- 對于客戶端的后續請求, Web 服務器可以使用接收到的 cookie 來識別該用戶,
二、Django 中 Cookie 的語法
1.設定 cookie:
rep =HttpResponse || render || redirect
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密鹽',...)
2. 獲取 cookie:
request.COOKIES.get(key)
3.洗掉 cookie:
rep =HttpResponse || render || redirect
rep.delete_cookie(key)
三、實體
1. 新增testCookie.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/testoperatecookie?type=set"><button>設定cookie</button></a><br/>
<a href="/testoperatecookie?type=get"><button>獲取cookie</button></a><br/>
<a href="/testoperatecookie?type=delete"><button>洗掉cookie</button></a>
</body>
</html>
2. 新增testCookie和testOperatorCookie函式

import datetime
import json
from django.core import serializers
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render, redirect
# Create your views here.
from userWeb.models import User
def index(request):
return render(request, './userWeb/index.html')
# 加法頁面
def add(request):
return render(request, './userWeb/add.html')
# 執行加法
def doadd(request):
a = request.POST['a']
b = request.POST['b']
a = int(a)
b = int(b)
result = a + b
# return HttpResponse(str(result))
context = {}
context['a'] = a
context['b'] = b
context['result'] = result
return render(request, './userWeb/add_result.html', context)
# 增加用戶頁面
def testUser(request):
return render(request, './userWeb/testUser.html')
# 執行增加用戶
def testAddUser(request):
name = request.POST['name']
level = request.POST['level']
createTime = datetime.datetime.now()
user = User.objects.create(name=name, level=level, createTime=createTime)
context = {}
context['msg'] = '用戶新增成功'
context['資料庫中的id'] = user.id
return HttpResponse(str(context))
# 資料庫查詢
def testQueryUser(request):
total = User.objects.count() # 查詢所有資料的總量
total_condition = User.objects.filter(level=2).count() # 查詢符合條件的資料總量
all_user = User.objects.all() # 查詢得到所有用戶,使用 all() 方法來查詢所有內容,可用索引下標取出模型類的物件,
all_user_condition = User.objects.filter(level=2) # 查詢得到指定條件的所有用戶
all_user_by_order = User.objects.filter(level=2).order_by('createTime') # 按創建時間從小到大排序,-createTime表示從大到小
a_user_by_id = User.objects.filter(pk=3) #pk=3 的意思是主鍵 primary key=3,相當于 id=3,因為 id 在 pycharm 里有特殊含義,是看記憶體地址的內置函式 id(),因此用 pk,
just_show_some_fields = User.objects.filter(pk=3).values("pk", "name") # 只顯示id和name者兩個欄位
print(just_show_some_fields)
context = {}
context['total'] = total # 查詢所有資料的總量
context['total_condition'] = total_condition # 查詢符合條件的資料總量
context['all_user'] = serializers.serialize("json", all_user) # 查詢得到所有用戶,使用 all() 方法來查詢所有內容,可用索引下標取出模型類的物件,
context['all_user_condition'] = serializers.serialize("json", all_user_condition) # 查詢得到指定條件的所有用戶
context['all_user_by_order'] = serializers.serialize("json", all_user_by_order) # 按創建時間從小到大排序,-createTime表示從大到小
context['a_user_by_id'] = serializers.serialize("json", a_user_by_id) #pk=3 的意思是主鍵 primary key=3,相當于 id=3,因為 id 在 pycharm 里有特殊含義,是看記憶體地址的內置函式 id(),因此用 pk,
#objects.values()回傳django.db.models.query.QuerySet物件,需要將ValuesQuerySet物件需要先轉換成list
context['just_show_some_fields'] = json.dumps(list(just_show_some_fields)) # 只顯示id和name者兩個欄位
return JsonResponse(context)
# 資料庫修改
def testUpdateUser(request):
# 查詢出指定的用戶
userid=request.GET.get('userid', None)
if userid is None:
return HttpResponse("必須傳遞userid引數")
# 修改前
before_update = User.objects.filter(pk=userid) #pk=3 的意思是主鍵 primary key=3,相當于 id=3,因為 id 在 pycharm 里有特殊含義,是看記憶體地址的內置函式 id(),因此用 pk,
context = {}
context['before_update'] = serializers.serialize("json", before_update)
# 將該用戶的level修改為10,回傳值:整數,受影響的行數
result = User.objects.filter(pk=userid).update(level=10)
# 修改后
after_update = User.objects.filter(pk=userid) #pk=3 的意思是主鍵 primary key=3,相當于 id=3,因為 id 在 pycharm 里有特殊含義,是看記憶體地址的內置函式 id(),因此用 pk,
context['after_update'] = serializers.serialize("json", after_update)
context['the_number_of_rows_affected'] = result
return JsonResponse(context)
# 資料庫洗掉
def testDeleteUser(request):
# 將該用戶的level修改為10,回傳值:整數,受影響的行數
result = User.objects.filter(pk__in=[2,3]).delete()
context = {}
context['msg'] = "洗掉成功"
context['the_number_of_rows_affected'] = result
return JsonResponse(context)
# 測驗cookie頁面
def testCookie(request):
return render(request, './userWeb/testCookie.html')
# 執行測驗cookie
def testOperateCookie(request):
type = request.GET.get('type', None)
if type == 'set':
rep = redirect("/testcookie")
rep.set_cookie("is_login", True)
return rep
elif type == 'get':
context = {}
context['is_login'] = request.COOKIES.get('is_login')
return JsonResponse(context)
elif type == 'delete':
rep = redirect("/testcookie")
rep.delete_cookie("is_login")
return rep
else:
return HttpResponse("引數不足")
3. 修改urls.py

4.效果

點擊設定cookie

點擊獲取cookie

點擊洗掉cookie

參考:https://www.runoob.com/django/django-cookie-session.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286391.html
標籤:其他
