우선 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
## 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')
파일을 넣어주고, 리다이렉션 해준다.
## forms.py
from django import forms
class UploadFileForm(forms.Form):
title = forms.CharField(Max_length=50)
file = forms.FileForm
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을 찾을 수 없다는 에러 메세지가 떴다.
에러발생
데이터 베이스에 대한 개념을 이해하고 있지 못하다는 것을 깨달았다.
그래서 데이터 베이스에 대한 개념을 이해하고 해결해야함을 느꼈다.