我正在尝试将带有backbone.js 和JQuery 的图像文件上传到由Django REST Framework 制作的API。我从本教程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 媒体网址和静态网址证明一切设置正确
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'
此外,模型中的字段特别称为 photo 和 is 和 Imagefield。