我似乎无法让 TastyPie 接受是否通过 Ajax 发出的 POST 请求。我收到一个错误:
指示“multipart/form-data”的格式没有可用的反序列化方法。请检查您的
formats
和content_types
在您的序列化器上。
我的模型资源是:
class ClippedCouponResource(ModelResource):
class Meta:
queryset = ClippedCoupon.objects.all()
allowed_methods = ['get', 'post']
serializers = UrlencodeSerializer()
authentication = DjangoCookieBasicAuthentication()
authorization = DjangoAuthorization()
default_format = 'application/json'
我的序列化器是:
from urlparse import urlparse
from tastypie.serializers import Serializer
class UrlencodeSerializer(Serializer):
formats = ['json', 'jsonp', 'xml', 'yaml', 'html', 'plist', 'urlencode']
content_types = {
'json': 'application/json',
'jsonp': 'text/javascript',
'xml': 'application/xml',
'yaml': 'text/yaml',
'html': 'text/html',
'plist': 'application/x-plist',
'urlencode': 'application/x-www-form-urlencoded',
}
def from_urlencode(self, data, options=None):
""" handles basic formencoded url posts """
qs = dict((k, v if len(v) > 1 else v[0])
for k, v in urlparse.parse_qs(data).iteritems())
return qs
def to_urlencode(self,content):
pass
现在,我只是在本地开发模式,所以所有的请求都会去localhost:8000
,所以我还没有启用任何跨域发布中间件。我能够对端点执行 GET 请求,/v2/api/clippedcoupon/
很好,但是 POST 完全失败。我在 Chrome 中使用 POSTMAN 进行测试。谁能看到我做错了什么?
编辑:
我为 TastyPie 实现了基于 cookie 的身份验证,一切都按预期工作。