[Django] cookie、セッション、設定読み取り、その他の操作の役割

1.cookie

HTTPプロトコルはステートレスであり、サーバーは異なるユーザーを区別できないため、Cookieは1993年に発明されました。実際、Cookieは、実際にはユーザーのブラウザに保存されている小さなテキスト情報です。

クッキーにはおそらく次の特徴があります

  • キーと値のペアの形式で情報を保存します
  • ドメイン名のセキュリティに基づいて、異なるドメイン名のCookieは相互にアクセスできません
  • 対応するドメイン名が配置されているサーバーへの現在の要求に自動的に従います
1.1クッキーを設定する

Djangoでは、HttpResponseオブジェクトのset_cookie()メソッドを使用してCookieを設定できます

# 创建响应对象
response = HttpResponse()
# 使用响应对象设置Cookie
response.set_cookie(key, value, max_age=36000)

上記のmax_ageパラメータは有効期間を設定します。単位は秒、デフォルトはNoneで、一時的に有効です。

class BooksView(View):
    def get(self, request):
        # 返回一个字典
        contents = {
    
    
            "title": "红楼梦",
            "read": "100",
            "others": [
                "人民教育出版社", "发行信息", "版权所有"
            ]
        }

        # 获取一个response对象
        response = render(request, 'books.html', contents)

        # 设置一个临时cookie
        response.set_cookie('name', 'admin', max_age=None)
        return response

1.2クッキーを削除する

ブラウザがCookieを使用してリクエストを開始すると、サーバーでCookieを読み取ることができます

class BooksView(View):
    def get(self, request):
		...
        # 取出浏览器发送过来的cookie
        name = request.COOKIES.get("name")
        print('获取到的cookie:', name)
		...
        return response

2.セッション

一般的に、重要な情報はフロントエンドで確認できるため、Cookieには保存しません。機密情報の場合、漏洩しやすいですが、セッションであるサーバー側に保存できます。

セッションメカニズム
クライアントがリクエストを開始すると、サーバーはランダムキー(session_key)を使用してユーザー情報を保存し、対応する値(session_data)はユーザー情報であり、このキーをクライアントに送信します。クライアントのCookie。次にクライアントがCookieを使用してサーバーにアクセスすると、サーバーはCookieに基づいて対応するユーザー情報を取得します。

セッションの特徴

  • 機密情報を公開しないでください
  • Cookieよりも多くのコンテンツを保存できます
  • 依存関係とCookie
  • セッション共有、セッションはクラスター全体で均一に管理できます
2.1セッションの設定

HttpRequest()オブジェクトのセッション属性を介して設定できます

request.session['key'] = value

前のビュー機能でセッションを設定し続けます

class BooksView(View):
    def get(self, request):
		...
        # 通过HttpRequest对象设置session
        request.session['name'] = 'admin'

        return response

ページを更新すると、応答ヘッダーが返される前に設定されたCookieに加えて、sessionidの文字列が表示されることがわかります。

ここに写真の説明を挿入

2.2セッションの読み取り

セッションの読み取りは、Cookieによって使用される操作オブジェクトがすべてHttpResponse()であり、セッションがHttpRequest()であることを除いて、Cookieの読み取りと同じです。

class BooksView(View):
    def get(self, request):
     	...
        # 通过HttpRequest对象设置session
        request.session['name'] = 'admin'

        # 读取Session
        name = request.session.get('name')
        print('session: ', name)

        return response

さらに、Djangoはセッションをデータベースに保存しますが、対応する値は暗号化されます

ここに写真の説明を挿入

2.3セッションの他の操作

セッションの主な操作は設定と読み取りであり、理解すべき他の操作があります

清除所有Session,在存储中删除值部分
request.session.clear()

清除session数据,在存储中删除session的整条数据
request.session.flush()

删除session中的指定键及值,在存储中只删除某个键及对应的值
del request.session['key']

设置session的有效期
request.session.set_expiry(value)

おすすめ

転載: blog.csdn.net/qq_39147299/article/details/108287108