在Django Rest框架API中设置cookie

在Django Rest框架API中设置cookie,django,cookies,django-rest-framework,Django,Cookies,Django Rest Framework,当向API端点发出GET请求时,我试图在我的网站上设置cookie 在我的url.py中,我有以下内容: url(r'^api/cookies/$', views.cookies, name='cookies'), 它指向此视图: @api_view(['GET']) def cookies(request): if request.method == 'GET': response = HttpResponse('Setting a cookie')

当向API端点发出GET请求时,我试图在我的网站上设置cookie

在我的url.py中,我有以下内容:

url(r'^api/cookies/$', views.cookies, name='cookies'),
它指向此视图

@api_view(['GET'])
def cookies(request):
    if request.method == 'GET':
        response = HttpResponse('Setting a cookie')
        response.set_cookie('cookie', 'MY COOKIE VALUE')
        if 'cookie' in request.COOKIES:
            value = request.COOKIES['cookie']
            return Response('WORKS')
        else:
            return Response('DOES NOT WORK')
换句话说,当通过GET方法加载此视图时,我正在设置cookie。如果cookie设置正确,则返回“工作”,否则返回“不工作”


现在,我向这个URL发送一个GET请求,我得到“不工作”,这意味着cookie设置不正确。我做错了什么?我怎样才能解决这个问题?注意:我的视图使用Django Rest框架。

您设置cookies作为响应:

response.set_cookie('cookie', 'MY COOKIE VALUE')
但如果需要cookies,请使用if

if 'cookie' in request.COOKIES:

这是因为设置cookie的响应从未发送到浏览器,因此未设置cookie。请注意下面的更改

@api_view(['GET'])
def cookies(request):
    if request.method == 'GET':
        if 'cookie' in request.COOKIES:
            value = request.COOKIES['cookie']
            response = HttpResponse('Works')
            return response
        else:
            response = HttpResponse('Does Not Works')
            response.set_cookie('cookie', 'MY COOKIE VALUE')
            return response
当您第一次运行它时,它将显示“不工作”,因为cookie尚未设置,所以如果条件失败,它将显示“不工作”,但在第二次它将工作