Django/DRF

QuerySet의 값들을 쿠키에 저장하기

Jong_seoung 2023. 2. 23. 09:59
반응형

결론적으로 이야기하지만 QuerySet의 데이터들은 바로 쿠키에 저장할 수 없습니다. 쿠키는

일반적으로 간단한 숫자나 문자만 저장할 수 있습니다. 따라서

QuerySet을 쿠키에 저장하기 위해선 문자열로 변환 후 쿠키에 저장해야합니다.

 

아래의 코드는 프로젝트 중 QuerySet을 쿠키에 저장하기 위해서 사용한 방법입니다. 주석 처리 된 부분만 유심히 보면 됩니다.

import json

class Main(TemplateView):
    template_name = 'content/main.html'

    def get(self, request):
        return render(request, 'content/main.html')

    def post(self, request):
        if request.method == 'POST':
            # ...
            FoodList_results = FoodList.objects.filter(a,b,c,d,e)
            FoodList_results_json = json.dumps(list(FoodList_results.values())) # QuerySet을 JSON 문자열로 변환
            response = redirect('main')
            response.set_cookie('FoodList_results', FoodList_results_json) # 쿠키에 JSON 문자열 저장
            return response
        else:
            return render(request, 'content/main.html', {'FoodList_results':FoodList_results})

 

FoodList_results가 쿠키에 저장하고 싶은 QuerySet입니다. 이 값을 values() 메서드로 쿼리 셋에서 값 목록으로 변환 후 json.dumps() 함수로 JSON문자열로 변환한 후 쿠키에 저장해 주었습니다.

반응형