Set cookies for ajax request, when "JsonResponse" is returned

1.6k Views Asked by At

When I use normal (not ajax) request, I do:

from django.shortcuts import redirect
from django.http import JsonResponse

response = redirect('/some_page')
response.set_cookie(key='key1', value='value1', max_age=3600) 
response.set_cookie(key='key2', value='value2', max_age=3600) 
return response

and it works and cookies are set.

Though, when I use ajax request, my view returns something like:

return JsonResponse({'res': 'success'})

and I'm not figured out, how I can set cookies, when JsonResponse is returned?

1

There are 1 best solutions below

0
On BEST ANSWER

The redirect('/some_page') is returning a HttpResponse and JsonResponse is a subclass of HttpResponse.

So, you can use the same set_cookie(...) method here too

def sample_view(request):
    response = JsonResponse({"foo": "bar"})
    response.set_cookie(key='key1', value='value1', max_age=3600)
    return response