将多个请求文件从视图传递给一个方法?

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'])

【讨论】:

以上是关于将多个请求文件从视图传递给一个方法?的主要内容,如果未能解决你的问题,请参考以下文章

Django:将请求直接(内联)传递给第二个视图

Django 表单向导 - 将请求传递给视图?

Ajax 请求 Codeigniter

使用请求参数将javascript变量传递给spring MVC控制器

通过 Laravel 中的 AJAX 发布请求将值从一个视图传递到另一个视图

如何将图像视图从改造加载的片段传递给子片段?