Django文件上传获取数据并存储在数据库中

时间:2017-03-14 19:27:38

标签: django

我是Django的新手,并希望就文件上传寻求建议。用户可以上传多个文件,但我不希望将文件存储在数据库中。我只想从文件中获取数据并将数据存储在数据库中。有办法吗?是否以本地方式存储文件?

我已经看到了在本地临时存储文件的方法(但我已经看到了我们需要指定自己的(计算机)路径的示例,这些路径可能因不同的计算机而不同)。有没有办法指定任何计算机可以在本地存储文件的路径?

抱歉没有代码,因为我仍在思考如何去做。

1 个答案:

答案 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})