java附件上传为空,request.FILES在文件上传时始终为空

我对这件事感到非常难过,而且必须做一些非常愚蠢的事情 . 我想在Django项目上上传一个文件 . 问题似乎是没有表单数据传递到服务器 - 只有csrf令牌 . 我在Mac上运行Django 1.5.1,python 2.7,virtualenv,并使用内置的Django开发服务器 .

我的HTML表单是:

{% load url from future %}

{% csrf_token %}

Upload grade csv file:

我的模特:

from django.db import models

class Document(models.Model):

file = models.FileField(upload_to='/media/', blank=True, null=True)

我的forms.py:

from django import forms

from .models import Document

class DocumentForm(forms.Form):

"""

to handle uploading grades csv file

"""

class Meta:

models = Document

我的views.py:

def report(request):

"""

Process the CSV file to remove inactive students

Manipulate to get right JSON format

Chart the results

"""

if request.method == 'POST':

form = DocumentForm( request.POST, request.FILES )

if form.is_valid():

newfile = Document( file = request.FILES['file'] )

newfile.save()

classdata = {}

studentdata = {}

return render( request, 'report/showreport.html', { 'classdata': classdata, 'studentdata': studentdata } )

else:

form = UploadFileForm()

return render( request, 'report/index.html', { 'form': form })

我花了几个小时寻找解决方案,但似乎没有任何效果 . I have the enctype set correctly(我认为),I am using input type 'submit' for the form和I am binding the form data to my model(不是't matter, since request.FILES is empty). I also tried using a direct url in my form action (action=' / report / showreport /')每this Django newbie page,但这没有什么区别 . 据我所知,没有其他脚本绑定到表单提交操作并覆盖默认操作 .

我也意识到上面的代码最应该是request.FILES ['grades_csv']来匹配表单的输入id ......但是这也没关系,因为request.FILES是空的 .

在尝试调试时,我在我的视图中的if request.method ==“POST”之前设置了一个pdb跟踪 . 使用控制台,我可以看到我的request.POST不包含我隐藏的“测试”输入,并且该request.FILES为空 . 当我在浏览器中运行它时,它只是将我返回到我的表单页面,基本上说我的表单无效 . 我的pdb结果在这里:

(Pdb) request.FILES

(Pdb)

(Pdb) request.POST['testing']

(Pdb) *** MultiValueDictKeyError: "Key 'testing' not found in "

(Pdb) request.POST

如果我尝试访问我的views.py中的request.FILES而不检查表单是否有效,我收到此错误:

"Key 'file' not found in "

我很难过,并感谢任何帮助,为什么我不能让它工作 - 看起来它应该很简单 . 我可以使用pdb手动创建和写入我的项目目录中的文件,所以我认为权限不是问题...问题在于表单?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值