我在使upload.html完全正常工作时遇到问题。html页面显示OK,我甚至可以选择csv文件进行上传。单击“添加数据”按钮时,它不会执行任何操作。我需要做什么才能将csv文件实际加载到模型中。下面是upload.html的代码,如下所示:
{% extends "myapp/base.html" %}
{% load bootstrap5 %}
{% block body_block %}
<div class="container">
<h1>Please select csv file for upload</h1>
<form action="" method="POST" enctype="multipart/form-data" class="form-control" >
{% csrf_token %}
{{ form }}
</form>
<button type="submit" class="btn btn-primary">Add data</button>
</div>
{% endblock %}
下面是forms.py
from django import forms
from .models import Csv
class CsvForm(forms.ModelForm):
class Meta:
model = Csv
fields = ('file_name',)
下面是views.py
from django.shortcuts import render
from .forms import CsvForm
from .models import Csv
import csv
def upload_file_view(request):
form = CsvForm(request.POST or None, request.FILES or None)
# check whether it's valid:
if form.is_valid():
form.save()
form = CsvForm()
obj = Csv.objects.get(activated=False)
with open(obj.file_name.path, 'r') as f:
reader = csv.reader(f)
for row in reader:
# this is not working yet.
print(row)
obj.activated=True
obj.save()
context = {'form': form,}
return render(request, 'csvs/upload.html', context)
下面是models.py
from django.db import models
class Csv(models.Model):
file_name = models.FileField(upload_to='csvs/', max_length=100)
uploaded = models.DateTimeField(auto_now_add=True)
activated = models.BooleanField(default=False)
def __str__(self):
return "File id: {}".format(self.id)
我不完全理解代码。选择csv时,它是否可以位于任何目录中
因此Upload.html文件的按钮位于块外。因此,它必须更改为表单标记内部,如下所示
相关问题 更多 >
编程相关推荐