【问题标题】: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'] 但这也不起作用

标签: django forms file request save


【解决方案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'])

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2021-08-24
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    相关资源
    最近更新 更多