質問
djangoビューで使用set_test_cookie
すると、実際にテストCookieを設定できず、その理由がわかりません。
再現する手順
実際のプロジェクトはこれよりもはるかに複雑ですが、ほぼ空のプロジェクトでエラーを再現できます。
シェル
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install django
(venv)$ django-admin.py startproject hellodjango .
(venv)$ python manage.py startapp polls
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'database.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
urls.py
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^login/$', 'hellodjango.polls.views.login'),
)
polls / views.py
from django.shortcuts import render_to_response
from django.http import HttpResponse
def login(request):
if request.method == 'POST':
if request.session.test_cookie_worked():
request.session.delete_test_cookie()
return HttpResponse("You're logged in.")
else:
return HttpResponse("Please enable cookies and try again.")
request.session.set_test_cookie()
return HttpResponse("Look ma, no cookies!")
シェル
(venv)$python manage.py runserver
ブラウザ
localhost:8000 / login /に移動し、getリクエストにソースごとの名前testcookie
と値を持つ応答Cookieが表示されないことに注意してください。worked
set_test_cookie