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 ベースの認証を実装しましたが、すべてが期待どおりに機能しています。