在 Django 视图中设置 cookie

dar*_*rse 1 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', {})
Run Code Online (Sandbox Code Playgroud)

加载视图时,控制台会打印出NOT SET,这意味着未设置 cookie。在每个教程/文档中,这似乎是使用的方法。但是,它对我来说根本不起作用:/

有什么帮助吗?我正在使用 Django 1.9.8,并且我正在本地服务器上运行该应用程序,或者127.0.0.1:8000.

Dan*_*man 5

您正在创建一个响应并在其上设置一个 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
Run Code Online (Sandbox Code Playgroud)