我是Django的新手,并希望就文件上传寻求建议。用户可以上传多个文件,但我不希望将文件存储在数据库中。我只想从文件中获取数据并将数据存储在数据库中。有办法吗?是否以本地方式存储文件?
我已经看到了在本地临时存储文件的方法(但我已经看到了我们需要指定自己的(计算机)路径的示例,这些路径可能因不同的计算机而不同)。有没有办法指定任何计算机可以在本地存储文件的路径?
抱歉没有代码,因为我仍在思考如何去做。
答案 0 :(得分:1)
大多数人会说只是将文件路径存储在数据库中并让Web服务器提供文件。除非您希望人们上传类似电子表格的内容,否则您应该使用电子表格插件将内容导入列表和字典,您可以将其作为模型写出来。
如何以您要求的方式执行此操作:
def handle_uploaded_file(upload):
contents = file.read() # Add .decode('ascii') if Python 3
my_model = MyModel(some_other_field='something')
my_model.field = contents
my_model.save()
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['file'])
return HttpResponseRedirect('/success/url/')
else:
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})