django实现页面上传不同的csv文件并保存到数据库
时间: 2023-05-20 12:00:39 浏览: 237
Django 接收Post请求数据,并保存到数据库的实现方法
5星 · 资源好评率100%
可以使用 Django 自带的文件上传功能,将上传的 CSV 文件保存到服务器上的某个目录中,然后读取 CSV 文件的内容,将其转换为 Python 对象,并将其保存到数据库中。以下是一个简单的示例代码:
```python
# views.py
from django.shortcuts import render
from django.http import HttpResponseRedirect
from .models import CsvData
import csv
def upload_csv(request):
if request.method == 'POST':
csv_file = request.FILES['csv_file']
if not csv_file.name.endswith('.csv'):
return render(request, 'error.html', {'message': 'File is not a CSV file'})
csv_data = csv_file.read().decode('utf-8').splitlines()
reader = csv.reader(csv_data)
for row in reader:
CsvData.objects.create(name=row[0], age=row[1], gender=row[2])
return HttpResponseRedirect('/success/')
return render(request, 'upload.html')
```
```html
<!-- upload.html -->
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="csv_file">
<button type="submit">Upload</button>
</form>
```
```python
# models.py
from django.db import models
class CsvData(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
gender = models.CharField(max_length=10)
```
这个示例代码假设 CSV 文件包含三列数据:姓名、年龄和性别。在上传 CSV 文件后,它将读取文件内容并将其转换为 Python 对象,然后将其保存到名为 CsvData 的数据库表中。
阅读全文