작성
·
283
0
안녕하세요 강사님
강의 잘 듣고 있습니다:)
현재 1회독을 진행한 상태이며 구현하고자 하는 기능을
어떻게 접근하면 좋을지 조언을 구하고자 문의드립니다.
저는 특정 조건에 맞는 데이터 엑셀 파일을 업로드할 경우,
간단한 형태라도 좋으니 히스토그램과 같은 그래프 또는
정형화된 통계 분석 결과를 제공하는 기능을 구현해보고자 합니다.
예를 들면, 분리된 pdf 파일을 하나로 병합해주는 사이트들과 비슷할 것 같습니다.
여기서 유저를 통해 전달받은 데이터를
1)내부적으로 가공하여
2)다시 유저에게 보여주는 부분
위 두 부분을 공부해보고 싶은데 어떤 메서드나 클래스를 공부하면 좋을까요??
감사합니다:)
답변 1
1
안녕하세요.
데이터 엑셀 파일이 업로드되면, 이를 저장하고 후가공하는 방법을 취해보실 수 있습니다.
- 파일 업로드에 대한 부분은 장고 모델에 models.FileField를 통해 필드를 정의하여, 장고 모델폼을 활용하여 손쉽게 저장 기능을 구현하실 수 있습니다.
후가공에서는 엑셀 파일 처리를 위해 openpyxl나 pandas 등의 라이브러리를 활용해보실 수 있겠구요.
그래프 또는 정형화된 통계 분석 결과의 output이 json 문자열이나 html 문자열이 되실 수도 있습니다.
html 결과라면 models.TextField를 통해 저장해보실 수 있겠고,
json 결과라면 models.JSONField가 좀 더 나은 선택이 되실 수 있습니다.
모델은 대략 아래와 같이 만들 수 있지 않을까 싶습니다.
class MyStat(models.Model):
excel_file = models.FileField()
stats = models.TextField(blank=True)
러프하게 models.FileField를 지정했지만, "특정 조건에 맞는 데이터 엑셀 파일" 여부를 검증하기를 원한다면, 장고의 Validators 기능을 활용하여 유효성 검증 루틴을 추가하실 수도 있습니다.
하지만 유효성 검증 부분은 나중으로 미뤄두시고, 우선순위 면에서
유저가 특정 조건에 맞는 데이터 엑셀 파일을 잘 업로드했다고 가정하고
핵심 기능을 먼저 구현해보시기를 추천드립니다.
위 기능들을 구현하실려면, 설계철학 강의 내용만으로는 충분하지 않을 수는 있는 데요.
살펴보시고, 질문 남겨주시면 저도 같이 고민해보도록 하겠습니다.
장고와 함께 차트를 만드는 방법은 정말 다양할텐데요.
plotly 라이브러리를 요즘 많이 사용하니까, 아래 영상도 참고해보세요.
Django, Charts and Data Visualization 플레이 리스트 by BugBytes
https://www.youtube.com/playlist?list=PL-2EBeDYMIbTt63EH9ubqbvQqJkBP3vzy
화이팅입니다. :-)
혹은 별도의 저장없이, 파일을 업로드받아서 즉시 분석결과를 보여주려 하신다면,
일단 장고와 별개로, 인자로 엑셀파일을 받으면 분석한 html 문자열을 반환해주는 함수를 먼저 만드시고나서, 장고 뷰 단에서 이 함수를 호출하는 방식으로 구현해보셔도 좋겠네요.
그인자로 엑셀 파일을 받으면 분석한 html 문자열을 반환해주는 함수는 jupyter notebook에서 개발하시면 좀 더 편리하실 수 있습니다. jupyter notebook에서 만드신 후에, 그 코드를 복사해서 장고 단으로 옮기는 거죠.
장고 뷰에서는 request.FILES 를 통해 업로드된 파일내역을 참조하실 수 있습니다.
차근차근 화이팅입니다. :-)
강사님 친절하고 자세한 답변 정말 너무 감사드립니다:)