4

私はこれのいくつかのバージョンを試しました:

def process_response(self, request, response):

    if not request.COOKIES.get('new_user', None):

        print "cookie"

        max_age = 365 * 24 * 60 * 60  # 10 years
        expires = datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age)
        response.set_cookie('new_user', expires=expires)


    return response

しかし、それは機能しません。ページ要求ごとに「cookie」が出力され、FF dev ツールバーの cookie lister に cookie が表示されません。Cookie を拒否するようにブラウザを設定していません。

私は現在開発サーバーを使用しており、共通ミドルウェアとセッションミドルウェアを設定の最初のものとして設定しています。クッキーの設定はありません。

4

2 に答える 2

5

何時間も検索した結果、次のmax_ageパラメーターを設定する必要があることがわかりました。

response.set_cookie('ref', request.GET.get('ref', ''),
                    expires=expires.utctimetuple(), max_age=max_age)
于 2013-04-09T04:09:00.667 に答える
0

Djangoドキュメントから:

expires は、"Wdy, DD-Mon-YY HH:MM:SS GMT"形式の文字列、またはUTC の datetime.datetime オブジェクトのいずれかである必要があります。expires が日時オブジェクトの場合、max_age が計算されます。

だから、それを試してください:

>> import datetime
>>max_age = 365 * 24 * 60 * 60  # 10 years
>>expires = datetime.datetime.now() + datetime.timedelta(seconds=max_age)

# Cookie to GMT format via strftime method
>>response.set_cookie('new_user', expires=expires.strftime("%a, %d-%b-%Y %H:%M:%S GMT"))

また

>> response.set_cookie('new_user', expires=expires.utctimetuple())

私は最初の方法を好みます。

于 2012-10-14T19:14:43.093 に答える