ここに単純なもの...Djangoでのクッキーの存在のテスト
経由でDjangoのクッキーを参照しようとすると、クッキーが存在しないとキーエラーがスローされます。
DzangのGET
とPOST
の場合、QueryDict
オブジェクトなので、私はちょうど
if "foo" in request.GET
を実行することができます...
そうでないクッキーTry/Catchブロック、もしあれば...
ここに単純なもの...Djangoでのクッキーの存在のテスト
経由でDjangoのクッキーを参照しようとすると、クッキーが存在しないとキーエラーがスローされます。
DzangのGET
とPOST
の場合、QueryDict
オブジェクトなので、私はちょうど
if "foo" in request.GET
を実行することができます...
そうでないクッキーTry/Catchブロック、もしあれば...
request.COOKIES
は標準のPython辞書であるため、同じ構文が有効です。
それを行うための別の方法は次のとおりです。キーが存在する場合は値を返します
request.COOKIES.get('key', 'default')
、そうでない場合は「デフォルト」 - あなたは「デフォルト」の代わりに好きなものを置くことができます。
まず場合try/catchブロックは、それが
request.COOKIES
です
なしrequest.COOKIE
。他の人があなたにエラーを投げます。
第二には、それは辞書(または、辞書のような)物ですので:
if "foo" in request.COOKIES.keys()
はあなたが必要なものを提供します。 あなたはクッキーの値を取得したい場合は、あなたが使用することができます。
request.COOKIES.get("key", None)
、その後、何もキー"key"
はありません場合は、あなたの代わりに例外のNone
を取得します。
python 2.2以降では、 'if "foo"をrequest.COOKIES'に使用できます。 '.keys()'を追加する必要はありません。 –
おそらくそれはちょうど私ですが、私はより長いバージョンが好きです(おそらく、2.2より前のバージョンで長時間作業していたことがあります)。それはより対称的で、もっと暗黙的なものです。もし私が使うなら、dict.keys()の "foo"ではdict.values()の "bar" ... – kender
@kenderの ' dict.keys() '' - 'dict.keys()'の "foo"はガベージコレクトされたリストを作成します。 – warvariuc