2009-09-23 13 views
6

ここに単純なもの...Djangoでのクッキーの存在のテスト

経由でDjangoのクッキーを参照しようとすると、クッキーが存在しないとキーエラーがスローされます。

DzangのGETPOSTの場合、QueryDictオブジェクトなので、私はちょうど

if "foo" in request.GET 

を実行することができます...

そうでないクッキーTry/Catchブロック、もしあれば...

答えて

20

request.COOKIESは標準のPython辞書であるため、同じ構文が有効です。

それを行うための別の方法は次のとおりです。キーが存在する場合は値を返します

request.COOKIES.get('key', 'default') 

、そうでない場合は「デフォルト」 - あなたは「デフォルト」の代わりに好きなものを置くことができます。

5

まず場合try/catchブロックは、それが

request.COOKIES 
です

なしrequest.COOKIE。他の人があなたにエラーを投げます。

第二には、それは辞書(または、辞書のような)物ですので:

if "foo" in request.COOKIES.keys() 

はあなたが必要なものを提供します。 あなたはクッキーの値を取得したい場合は、あなたが使用することができます。

request.COOKIES.get("key", None) 

、その後、何もキー"key"はありません場合は、あなたの代わりに例外のNoneを取得します。

+2

python 2.2以降では、 'if "foo"をrequest.COOKIES'に使用できます。 '.keys()'を追加する必要はありません。 –

+1

おそらくそれはちょうど私ですが、私はより長いバージョンが好きです(おそらく、2.2より前のバージョンで長時間作業していたことがあります)。それはより対称的で、もっと暗黙的なものです。もし私が使うなら、dict.keys()の "foo"ではdict.values()の "bar" ... – kender

+0

@kenderの ' dict.keys() '' - 'dict.keys()'の "foo"はガベージコレクトされたリストを作成します。 – warvariuc

関連する問題