Чтобы лучше познакомиться с django, я решил создать веб-сайт, который позволит пользователю загружать файл csv, который затем будет преобразован в excel, и пользователь сможет его загрузить.
Для этого я создал модельную форму с одним model FileField
с именем csv_file
, как показано ниже:
#models.py
class CSVUpload(models.Model):
csv_file = models.FileField(upload_to="csvupload/")
def __str__(self):
return self.csv_file
#forms.py
class CsvForm(forms.ModelForm):
class Meta:
model = CSVUpload
fields = ('csv_file', )
и соответствующее представление:
from django.shortcuts import render, redirect
import pandas as pd
import os
#converts file from csv to excel
def convertcsv2excel(filename):
fpath = os.path.join(settings.MEDIA_ROOT + "\csvupload", filename)
df = pd.read_csv(fpath)
newfilename = str(filename) +".xlsx"
newpathfile = os.path.join(settings.MEDIA_ROOT, newfilename)
df.to_excel(newpathfile, encoding='utf-8', index=False)
return newfilename
def csvtoexcel(request):
if request.method == 'POST':
form = CsvForm(request.POST, request.FILES)
if form.is_valid():
form.save()
print(form.cleaned_data['csv_file'].name)
convertcsv2excel(form.cleaned_data['csv_file'].name)
return redirect('exceltocsv')
else:
form = CsvForm()
return render(request, 'xmlconverter/csvtoexcel.html',{'form': form})
прямо сейчас, как вы можете видеть, я использую Pandas, чтобы преобразовать файл csv, чтобы он преуспел внутри файла views.py. Мой вопрос: есть ли лучший способ сделать это (например, в модуле формы или модели), чтобы сделать файл Excel более эффективным для загрузки?
Я ценю любую помощь, которую вы можете оказать!