본문 바로가기
개발자 전향 프로젝트

(파이썬 장고) DB 테이블 CSV 로 출력하기

by 샘오리 2023. 11. 18.

views.py에 아래 함수를 집어넣고

def 함수명(request):

response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="파일명.csv"'

writer = csv.writer(response)
writer.writerow(['칼럼1','칼럼2',...])

변수1 = 장고 모델명.objects.all().values_list('칼럼1','칼럼2',...).order_by('정렬할 칼럼')
for 변수2 in 변수:
	writer.writerow(변수2)

return response

 

urls.py에 해당 함수를 추가하고

 

path('url 경로', views.py이름.함수명, name='이 path의 이름'),

 

프론트에서 urls.py에 지정한 경로로 요청을 날리만 하면 된다.

 

예를 들어 버튼을 눌러서 출력을 하게 하고 싶다면 아래와 같은 버튼에 이벤트를 걸어주면 된다.

onclick 이벤트를 걸어 url 경로를 지정해주면 가장 쉽게 출력할 수 있다.

<button id="ID 명">
출력
</button>

 

본인이 사용하고 있는 프론트 관련 프레임워크나 라이브러리에 따라

html이 아닌 곳에서 이벤트를 걸어주는것도 방법이다.

 

여기까지는 아무런 예외나 권한에 대한 고려 없이 단순히 csv로 출력하는 방법이었고

비즈니스에서는 네트워크가 끊길 시에 대한 예외나

해당 버튼을 볼 수 있고, 누를 수 있고, 눌렀을 때

DB에 접근하여 값을 가져와서 CSV로 출력할 수 있는 권한이 있는지 체크해야하는 필요가 생긴다.

 

물론 Export인 만큼 DB에 직접적인 영향을 끼치는 것은 아니지만 이러한 고민과 고려가 들어가야만

유지보수가 가능한 코드를 짤 수 있다.

 

다음은 Import에 관해 작성해보겠다.