# 어떻게 csv 파일로 chart.js 활용하여 시각화할 수 있을지?

Michael-Oh·2021년 8월 13일
0

우선 csv 파일을 넣을 html 파일을 작성한다.

#test.html 파일에서

## 컨테이너를 만들어서 버튼을 만든다.
<div class="container card" style="...">
  <div class="row justify-content-center container">
    <div class="content">
      <h1>csv 파일을 넣어주세요!</h1>
      **<form method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <input type="file" name="document" id="document" required="required" />
        <button id="submit" class="btn-primary">Upload</button>
      </form>**
    </div>
  </div>

## 파일을 업로드 할 수 있도록 버튼을 만든다. 
<form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="document" id="document" required="required" />
    <button id="submit" class="btn-primary">Upload</button>
</form>

views.py에서 함수를 만든다.

# views.py

## test 함수를 정의한다.
def test(request):

	context={}	 

	if request.method == 'POST': ## 제출했을 때 method가 작동
	      uploaded_file = request.FILES**['document']** ## test.html의 id_name이름을 넣는다.
	
		    **print(uploaded_file) ## 업로드 파일의 이름 보여줌.**

	return render(request, 'test.html')

atp_tennis_1998to2021.csv파일을 보여줌.

# views.py 파일
## 파일을 추가해주기 

from django.core.files.storage import FileSystemStorage ## 라이브러리를 가져오고

## csv 파일을 가져오고, save한다. 
if uploaded_file.name.endswith('.csv'):
        #save to file in chartdata folder
        savefile = FileSystemStorage() ## 가져옴
				
				name = savefile.save(uploaded_file.name, uploaded_file) ## 이름과 파일
# views.py 파일
## 파일을 추가해주기 

#파일이 어디 있는지 안다.
      # courrent diretory of the project
        d = os.getcwd() 
        print(d)
        file_directory = d+'\chartdata\\'+name

        readfile(file_directory)

        return redirect(results)

      else: 
          messages.warning(request, '파일이 제대로 업로드 되지 않았습니다!')
        

    return render(request, 'test.html')

파일을 넣어주고, 리다이렉션 해준다.

main forms.py를 추가해준다.

## forms.py

from django import forms

class UploadFileForm(forms.Form):
  title = forms.CharField(Max_length=50)
  file = forms.FileForm

result.html 파일을 만든다.

from django.contrib import admin
from django.urls import path
from main.views import test,results,index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', index),
    **path('test/', test),
    path('results/', results)**
]

urls.py파일에 추가해준다.

# views.py

from django.contrib import messages #메세지

## test 함수를 정의한다.
def test(request):

    context={}

    if request.method == 'POST':
      uploaded_file = request.FILES['document']

      print(uploaded_file)

      if uploaded_file.name.endswith('.csv'):
        #save to file in chartdata folder
        savefile = FileSystemStorage()

        name = savefile.save(uploaded_file.name, uploaded_file) 
      

      #파일이 어디 있는지 안다.
      # courrent diretory of the project
        d = os.getcwd() 
        print(d)
        file_directory = d+'\chartdata\\'+name

        readfile(file_directory)

        **return redirect(results)

      else: 
          messages.warning(request, '파일이 제대로 업로드 되지 않았습니다!')
        

    return render(request, 'test.html')**

판다스를 활용하여 파일 읽어오기!

# import pandas as pd 
## readfile 함수 만들기

def readfile(filename):

    my_file = pd.read_csv(filename, sep='[:;,|_]', engine = 'python')

    data = pd.DataFrame(data=my_file, index=None)

    print(data)

마이그레이션에서 에러 발생

## 오타문제

class UploadFileForm(forms.Form):
  title = forms.CharField**(max_length=50)**
  file = forms.FileForm

새로운 에러 발생

## **오타 문제**

from django import forms

class UploadFileForm(forms.Form):
  title = forms.CharField(max_length=50)
  **file = forms.FileField**

db파일 migrateion 제거 부터 다양한 에러 해결해보았지만, 해결되지 않음.

어떻게 해야할 지 고민

에러메세지 : file을 찾을 수 없다는 에러 메세지가 떴다.

에러발생

진행하면서 깨달은 점

데이터 베이스에 대한 개념을 이해하고 있지 못하다는 것을 깨달았다.
그래서 데이터 베이스에 대한 개념을 이해하고 해결해야함을 느꼈다.

profile
초보 개발자의 테니스 과학적 분석 Dev-Log

0개의 댓글

관련 채용 정보