1

尝试使用 TastyPie 发布 * 表单数据 * 时收到以下错误消息(下文

无法解码任何 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 回答