【ジャンゴ】クッキー

@

クッキーの紹介


クッキーの起源

我々は、すべての==のHTTPプロトコルはステートレス==であることを知っています。

==ステートレスは、それが直接影響し、上記要求応答によって限定されるものではなく、各要求は、その実行と以前の要求の結果の後に独立した==要求であると直接関連していない手段、及びこれは、直接、後者のリクエストの応答に影響を与えることはありません。

唯一の生命の兆候を示した場合は、サーバーのために、各要求が新しいです。

==状態は、特定のセッションで生成されたクライアントとサーバーの両方のデータとして理解することができる。==
==何の状態は、これらのデータは==を保持されないことを理解することはできません。
データは、セッション中に発生した、私たちは、保存する必要があるということですクッキーが生まれたので、それは、「ホールド」することである。このようなシナリオで
***

クッキーとは何ですか

特異的に参照クッキーは、それは==サーバー少ない情報であるた==するブラウザに格納された鍵の束を送信します。サーバーブラウザにアクセスし、次の時間が自動的に有用な情報を抽出するために、サーバのためにこれらのキーと値のペアを運ぶでしょう。
クッキー自体は4096バイトまでサポート。
***

クッキーの原則

サーバーによって生成された、ブラウザはローカルに保存された要求を受け取る;ときに、ブラウザの訪問サーバーは、このクッキーの内容によって判断することができますので、ブラウザが自動的に、クッキーをもたらす「誰が」。
***

ビューのクッキー

私たちは、Chromeブラウザを使用する開発者向けツールを開きます。
ここに画像を挿入説明

操作クッキー


クッキーの取得

def login(request):
    # 获取Cookie:
    ret = request.COOKIES['user']
    # ret = request.COOKIES.get('user')
    # request.get_signed_cookie(key, salt='user', default='')
    # request.get_signed_cookie('user', default=RAISE_ERROR, salt='', ax_age=None)
    return render(request, 'login.html')

get_signed_cookieメソッドのパラメータ:

  • デフォルト:デフォルト値
  • 塩:塩暗号化
  • max_ageの:バックグラウンドコントロールの有効期限
    ***
def test(request):
    rep = HttpResponse('is ok')
    # 设置Cookie:
    rep.set_cookie('user', 'zyk')
    # rep.set_signed_cookie('user', 'zyk', salt="加盐")
    return rep

示すように、クッキーの設定を確認します。
ここに画像を挿入説明

set_cookieメソッドのパラメータ:

  • キー:キー。
  • 値= '':値。
  • max_ageの=なし:タイムアウト。
  • IEブラウザのタイムアウトを指定します:= Noneを満了していない(IE>が必要で期限が切れるので、まだされていない場合、それを設定します。)。
  • パス=「/」:特別なと力/パス表現でクッキーパス:ページのパスを持つクッキーは、任意のURLのアクセスすることができます。
  • ドメイン=なし:力のクッキーのドメイン名
  • = Falseを確保します。https伝送
  • HTTPのみ= Falseの:HTTPのみ伝送プロトコル、JavaScriptは(キャプチャの底に取得することができますが覆われていてもよい、絶対ではない)を取得することはできません。
    ***

クッキーを削除します

def test(request):
    rep = HttpResponse('is ok')
    # 删除Cookie:
    rep.delete_cookie('user')
    return rep

クッキー着陸バージョンチェック:

from django.shortcuts import render, redirect, HttpResponse
from blog01 import models


# 装饰器函数
def login_required(fn):
    """如果未登陆,将返回login页面"""
    def inner(request, *args, **kwargs):
        print(request.COOKIES.get('is_login'))
        if request.COOKIES.get('is_login') != '1':
            # 获取当前url路径
            next = request.path_info
            return redirect('/login/?next=%s' % next)
        ret = fn(request, *args, **kwargs)
        return ret
    return inner


# 登陆功能
def login(request):
    if request.method == 'POST':
        user = request.POST.get('user')
        pwd = request.POST.get('pwd')
        if models.Userinfo.objects.get(name=user, pwd=pwd):
            # 提取跳转之间访问的页面
            next = request.GET.get('next')
            rep = redirect(next) if next else redirect('/home/')
            # 设置Cookie,  max_age=1:指定过期时间为1秒
            rep.set_cookie('is_login', '1', max_age=1)
            return rep
    return render(request, 'login.html')


@login_required
def home(request):
    return HttpResponse("我是home页面")


@login_required
def home01(request):
    return HttpResponse("我是home01页面")

おすすめ

転載: www.cnblogs.com/gqy02/p/11307179.html