【发布时间】:2018-03-05 03:46:49
【问题描述】:
我正在构建我的第一个 Django 应用程序,我需要一个上传页面,以便能够以不同的上传形式上传多个文件。我需要不同的形式,我猜是模型,因为根据形式,文件必须存储在我的媒体根目录中的相应文件夹中,并经过不同的进一步转换。我还希望不同的用户对这些上传有不同的访问权限。
到目前为止,我有这样的东西(我在 views.py 中的函数中有相当多的附加代码,它们将数据发送到数据帧或其他程序,但我没有发布这些:
models.py
class Upload(models.Model):
document = models.FileField(storage=OverwriteStorage(),upload_to=get_file_path)
upload_date=models.DateTimeField(auto_now_add =True)
class Upload_variables(models.Model):
variables = models.FileField(storage=OverwriteStorage(),upload_to=get_file_path_var)
upload_date=models.DateTimeField(auto_now_add =True)
forms.py
from django import forms
from uploader.models import Upload, Upload_variables
class UploadForm(forms.ModelForm):
class Meta:
model = Upload
fields = ('document',)
class UploadFormVar(forms.ModelForm):
class Meta:
model = Upload_variables
fields = ('variables',)
views.py
def home(request):
if request.method=="POST":
img = UploadForm(request.POST, request.FILES)
if img.is_valid():
img.save()
else:
img=UploadForm()
files=Upload.objects.all()
return render(request,'home.html',{'form':img})
def variables(request):
if request.method == 'POST':
var = UploadFormVar(request.POST, request.FILES)
if var.is_valid():
var.save()
else:
var = UploadFormVar()
files_st = Upload_variables.objects.all()
return render(request, 'home.html', {'form_b': var})
HTML
<form action="#" method="post" enctype="multipart/form-data">
{% csrf_token %} {{form}}
<input type="submit" value="Upload" id="submit_form"/>
</form>
<form action="#" method="post" enctype="multipart/form-data">
{% csrf_token %} {{form_b}}
<input type="submit" value="Upload" id="staging"/>
</form>
所以我可以看到 2 个上传按钮,但只有一个“选择文件”.... 感谢您的帮助!
【问题讨论】:
标签: html django file-upload django-forms django-views