将多个请求文件从视图传递给一个方法?
Posted
技术标签:
【中文标题】将多个请求文件从视图传递给一个方法?【英文标题】:Passing multiple request files to a method from the view? 【发布时间】:2013-11-15 18:15:50 【问题描述】:在 Django 中,当您将表单数据传递给表单方法时,您通常会调用该方法本身,将视图中的对象从 form.data['whateverdata'] 更改。到 self.data['whateverdata']。但是,当传递请求文件(在我的情况下为 2 个)时,Self 似乎也不起作用 request.FILES ['whateverdata'] 也不起作用。关于如何安排的任何想法。
查看
def upload(request):
if request.method == "POST":
form = VastTagForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponse("SUCCESS")
else:
return HttpResponse("form isn't valid")
表单方法
def save(self):
objs = VastTag.objects.create(media_impression=self.data['media_impression'],
media_file=self.FILES['media_file'],
companion_file=self.FILES['companion_file'])
【问题讨论】:
一旦你通过is_valid()
,我猜self.media_file
应该可以正常工作。
表格有效。 .media_file 方法不存在,除非您的意思是 self.data['media_file'] 但这也不起作用
【参考方案1】:
不确定这是否是最佳做法,但它可以完成工作。我让 save 函数接受另一个参数,以及何时可以在视图中访问文件;我把它传给了保存函数。
查看
def upload(request):
if request.POST:
form = VastTagForm(request.POST, request.FILES)
if form.is_valid():
form.save(request.FILES)
return HttpResponse("SUCCESS")
else:
return HttpResponse("form isn't valid")
表格方法
def save(self, files):
objs = VastTag.objects.create(media_impression=self.data['media_impression'],
media_file=files['media_file'],
companion_file=files['companion_file'])
【讨论】:
以上是关于将多个请求文件从视图传递给一个方法?的主要内容,如果未能解决你的问题,请参考以下文章
使用请求参数将javascript变量传递给spring MVC控制器