私は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)
私のフォームには 2 つのフィールドがあり、両方とも必須です。したがって、フォームを送信すると、 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'}