Django REST Framework で作った API に backbone.js と JQuery で画像ファイルをアップロードしようとしています。このチュートリアルhttp://10kblogger.wordpress.com/2012/05/25/a-restful-password-locker-with-django-and-backbone-js/に従うことから始めました。
フォームを送信してファイルをアップロードすると、ファイルを選択したにもかかわらず、写真フィールドが必要であるという不適切な要求が表示されます。
私が得るエラーは次のとおりです。
{"写真":["このフィールドは必須です。"]}
また:
要求された URL /static/media/C:/fakepath/music notes.png がこのサーバーで見つかりませんでした。
私のHTML:
<div id="listingModal" class="modal hide fade">
<form id="listingForm" enctype="multipart/form-data" method="post">
<div class="modal-header"><button class="close" data-dismiss="modal">×</button>
<h3>Listing Details</h3>
</div>
<div class="modal-body">{{ form }}</div>
<div class="modal-footer">
<a class="btn" href="#" data-dismiss="modal">Cancel</a>
<input class="btn btn-primary" type="submit" value="Save" />
</div>
</form>
</div>
保存機能:
handleModal: function(event)
{
event.preventDefault();
event.stopImmediatePropagation();
var form = $('#listingForm');
var listingData =
{
title: $(form).find('#id_title').val(),
description: $(form).find('#id_description').val(),
//user: $(form).find('#id_user').val(),
photo: $(form).find('#id_photo').val(),
trade_completed: $(form).find('#id_trade_completed').val(),
date_created: $(form).find('#id_date_created').val(),
date_completed: $(form).find('#id_date_completed').val(),
};
if($('#listingModal').data('client_id'))
{
listingData.listing_id = $('#listingModal').data('client_id');
this.listings.updateListing(listingData);
}
else
{
this.listings.addNew(listingData);
}
//hide the modal
$('#listingModal').modal('hide');
return this;
},
updateListing 関数:
updateListing: function(listingData)
{
var listing = this.listings.get({id: listingData.listing_id});
if(_.isObject(listing))
{
//iterate through the data, and add it to the model
for(var key in listingData)
{
//dont copy id, already checked
if(key != 'listing_id')
{
listing.set(key,listingData[key]);
}
}
listing.save();
//this.listings.sort();
}
},
ファイルを手動でアップロードする必要があるためかもしれませんが、その方法がわかりません。どんな助けでも大歓迎です。
編集: これが私の settings.py メディア URL と静的 URL であり、すべてが正しく設定されていることを証明します
MEDIA_ROOT = '/opt/bitnami/apps/django/django_projects/Project/Project/static/media/'
MEDIA_URL = '/static/media/'
STATIC_ROOT = '/opt/bitnami/apps/django/django_projects/Project/Project/static'
STATIC_URL = '/static/static_files_dir'
また、特にフィールドは写真と呼ばれ、モデルではイメージフィールドです。