1

TastyPie を使用して*フォーム データ* をPOSTしようとすると、次のエラー メッセージ (以下を参照) が表示されます。

JSON オブジェクトをデコードできませんでした

これを機能させるには、ボディにjsonオブジェクトを渡す必要があることを理解していますが、フォーム投稿だけがあり、jsonを使用したくない場合はどうなりますか(jsonでのみ出力されます)

FORM POSTでおいしいパイを作るにはどうすればよいですか?

ありがとう

class SMSResource(ModelResource):

    class Meta(CommonMeta):
        queryset = Batch.objects.all()
        resource_name = 'sms'
        list_allowed_methods = ['get', 'post']
        detail_allowed_methods = ['get']
4

1 に答える 1

3

投稿を作成するには、コンテンツ タイプが x-www-form-urlencoded であることを確認してください。

class MultipartResource(object):
    def deserialize(self, request, data, format=None):
        if not format:
            format = request.META.get('CONTENT_TYPE', 'application/json')

        if format == 'application/x-www-form-urlencoded':
            return request.POST

        if format.startswith('multipart'):
            data = request.POST.copy()
            data.update(request.FILES)
            return data

        return super(MultipartResource, self).deserialize(request, data, format)

    def put_detail(self, request, **kwargs):
        if request.META.get('CONTENT_TYPE').startswith('multipart') and \
                not hasattr(request, '_body'):
            request._body = ''

        return super(MultipartResource, self).put_detail(request, **kwargs)

次に、リソース クラスで次のようにします。

class SMSResource(MultipartResource, ModelResource):

    class Meta(CommonMeta):
        queryset = Batch.objects.all()
        resource_name = 'sms'
        list_allowed_methods = ['get', 'post']
        detail_allowed_methods = ['get']
于 2013-06-14T09:49:51.710 に答える