私は django ログイン ビューを作成しています。これは、一般的なものを再利用してほとんどの面倒な作業を行いますが、後でいくつかの詳細を処理します。
COMPANY_COOKIE = 'last_login_company_id'
def login(request, *args, **kwargs):
initial_company_id = request.COOKIES[COMPANY_COOKIE] if COMPANY_COOKIE in request.COOKIES else None
def makeCompanyAuthenticationForm(*args, **kwargs):
kwargs.setdefault('initial', {})
initial = kwargs['initial']
initial['company'] = initial_company_id
return CompanyAuthenticationForm(*args, **kwargs)
kwargs['authentication_form'] = makeCompanyAuthenticationForm
response = django_login(request, *args, **kwargs)
if request.method == 'POST' and request.user.is_authenticated():
request.session['user_menu'] = get_user_menu()
if 'company' in request.POST:
log.debug("Storing user company %s in cookie %s", request.POST['company'], COMPANY_COOKIE)
response.set_cookie(COMPANY_COOKIE, request.POST['company'])
request.session.save()
return response
カスタム フォームで既定の会社を設定するメカニズムについてのコメントはさておき、なぜ myCOMPANY_COOKIE
が設定されていないのか疑問に思っています。
に設定して Django デバッグ ツールバーをINTERCEPT_REDIRECTS
True
使用しています。ログ ステートメントが呼び出されていることがわかります。set_cookie の後に pdb.set_trace() を挿入すると、response.cookies に会社 ID Cookie が含まれていることがわかります。ただし、私のブラウザにはそれがありません。DjDT では、リクエストの COOKIES 変数に Cookie が含まれていないことがわかります。Chrome のストレージ インスペクタでも同じことがわかります。last_login_company_id
どこにもクッキーはありません。
これが設定されないのはなぜですか?