【问题标题】:File field not passing data to form文件字段未将数据传递给表单
【发布时间】:2013-03-24 21:24:38
【问题描述】:

我正在使用 python 2.7 和 django 1.5

Forms.py

class FileUploadForm( forms.Form ):
    file = forms.FileField()
    title = forms.CharField(max_length = 200)

HTML

<form action="{% url 'upload_file' %}" method="post" class="userFroms">
    {% csrf_token %}
      <ul class="pull-left">
      <li>
      <div class="formLabel ">Title</div>

      <div class="formFields"><input name="title" type="text" />

      </div>

      </li>

      <li>
      <div class="formLabel">Upload File</div>
      <div class="formFields">
     <input name="file" type="file" size="20" />
      </div>
      </li>


      </ul>
       <p align="center" style="margin:20px 0; "><input type="submit" value="submit" class="btn btn-info" /></p>

   </form>   

View.py

def upload_file(request):
    if request.method == 'POST':
        form = FileUploadForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
            return HttpResponseRedirect('/success/url/')
    else:
        form = FileUploadForm()
    return render_to_response('upload.html', {'form': form})


def handle_uploaded_file(f):
    with open('documents/name.txt', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

我的表单有两个字段,并且都是必需的。因此,当我提交表单时,它会使用 form.is_valid() 函数检查有效性。在我的表单字典中,我可以看到标题是在cleaned_data 中发送的,但是文件丢失了。文件虽然在字典中可用。我做错了什么?

{'files': {}, 'is_bound': True, 'cleaned_data': {'title': u'dsad'}, 'error_class': <class 'django.forms.util.ErrorList'>, 'empty_permitted': False, 'fields': {'title': <django.forms.fields.CharField object at 0x7f64783ed410>}, 'initial': {}, 'label_suffix': u':', 'prefix': None, '_changed_data': None, 'data': <QueryDict: {u'title': [u'dsad'], u'csrfmiddlewaretoken': [u'fRCrB7JrXIQVVfQSJW70eayu5DM9PiIM'], u'file': [u'406123_138447936269777_246495737_n.jpg']}>, '_errors': {'file': [u'This field is required.']}, 'auto_id': u'id_%s'}

【问题讨论】:

    标签: django django-forms django-1.5


    【解决方案1】:

    你还没有设置表单的编码类型:

    <form enctype="multipart/form-data" action="{% url 'upload_document' %}" method="post" class="userFroms">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 2023-03-11
      • 2022-06-10
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多