在Django Rest框架API中设置cookie
当向API端点发出GET请求时,我试图在我的网站上设置cookie 在我的url.py中,我有以下内容:在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')
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尚未设置,所以如果条件失败,它将显示“不工作”,但在第二次它将工作