오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Web Programming/Django

Django - 관리자 페이지에서 엑셀 출력 방법

junha6316 2020. 10. 12. 12:18

한글 출력 때문에 꽤 고생했다..

HttpResponse에서 charset ='euc-kr'로 바꿔 출력하면 된다.

#app -> admin.py 에 다음과 같이 작성한다.
 actions = ["export_as_csv"]

    def export_as_csv(self, request, queryset):

        """ return Export as csv File """

        meta = self.model._meta #모델이름을 불러온다.
   
        response = HttpResponse(content_type="text/csv")
        #기본 인코딩 방식은 utf-8이므로 한글 출력을 원할때는 아래 주석과 같이 작성한다.
        #response = HttpResponse(content_type="text/csv", charset = 'euc-kr')
        
        response["Content-Disposition"] = "attachment; filename={}.csv".format(meta)

        writer = csv.writer(response)
        writer.writerow(field_names)
        for obj in queryset:
            row = writer.writerow([getattr(obj, field) for field in field_names])

        return response