我正在尝试使用以下代码在视图中设置cookie。
def index(request):
resp = HttpResponse("Setting a cookie")
resp.set_cookie('name', 'value')
if 'name' in request.COOKIES:
print "SET"
else:
print "NOT SET"
return render(request, 'myapp/base.html', {})
加载视图后,控制台会打印出NOT SET
,这意味着未设置cookie。在每个教程/ doc中,这似乎是使用的方法。但是,它对我来说根本不起作用:/
有任何帮助吗?我使用的是Django 1.9.8,我在本地服务器上运行应用程序,或127.0.0.1:8000
。
答案 0 :(得分:3)
您正在创建响应并在其上设置Cookie,但之后您实际上并未对该响应做任何事情。 render
快捷方式创建自己的响应,即实际发送回浏览器的响应。
您应该从渲染中捕获返回值,并在其上设置cookie:
if 'name' in request.COOKIES:
print "SET"
else:
print "NOT SET"
resp = render(request, 'myapp/base.html', {})
resp.set_cookie('name', 'value')
return resp