728x90
반응형
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에 관해 작성해보겠다.
728x90
반응형
'개발자 전향 프로젝트' 카테고리의 다른 글
ajax 로딩 시 로딩 중 표시하는 방법 (jQuery Loading Spinner) (0) | 2023.12.20 |
---|---|
(파이썬 장고) CSV 를 Django를 이용해 DB에 집어넣기 (0) | 2023.11.19 |
SonarQube 사용법 (Windows) (0) | 2023.07.20 |
로컬 컨테이너에 백업 DB 구축하기 (feat. Docker, Postgre) (0) | 2023.07.15 |
[Windows] Kafka란? Kafka + Filebeat 설치 및 ELK 연동까지 (2) | 2023.06.14 |