在Django视图中设置cookie

时间:2016-09-24 12:30:28

标签: python django cookies

我正在尝试使用以下代码在视图中设置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

1 个答案:

答案 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