Django Rest 框架和 CSVRenderer

Posted

技术标签:

【中文标题】Django Rest 框架和 CSVRenderer【英文标题】:Django Rest Framework and CSVRenderer 【发布时间】:2015-04-26 06:05:49 【问题描述】:

我想像这样使用djangorestframework-csv:

# serializers.py
class ResourceSerializer(serializers.ModelSerializer):
    url = serializers.SerializerMethodField('get_url')
    file = serializers.SerializerMethodField('`enter code here`get_file')
    extra_file = serializers.SerializerMethodField('get_extra_file')
    owner = serializers.SerializerMethodField('get_owner')

    def get_url(self, resource):
        return resource.get_absolute_url()

    def get_file(self, resource):
        return resource.get_file()

    def get_extra_file(self, resource):
        return resource.get_extra_file()

    def get_owner(self, resource):
        return resource.owner.email if resource.owner else None

    class Meta:
        model = Resource

        fields = (
            'name',
            'description',
            'file',
            'extra_file',
            'resource_type',
            'date_uploaded',
            'date_recorded',
            'location',
            'owner',
            'url',
        )

# views.py 
@api_view(['GET'])
@renderer_classes((CSVRenderer, ))
def resources(request):
    """
    Return all public Resources.
    """

    resources = Resource.objects.filter(status='Public')

    return Response(
        ResourceSerializer(
            resources,
            many=True
        ).data
    )

但是服务器返回:

响应正文
细节

无法满足请求的 Accept 标头

响应代码
406 不可接受

响应标头

  "日期": "2015 年 2 月 24 日星期二 14:36:38 GMT",
  “允许”:“选项,获取”,
  "服务器": "WSGIServer/0.1 Python/2.7.3",
  “变化”:“饼干”,
  “内容类型”:“文本/csv;charset=utf-8”

我很乐意为这个问题提供任何解决方案。

【问题讨论】:

【参考方案1】:

现在我决定使用django-queryset-csv 包,它几乎“解决”了我的问题。

【讨论】:

以上是关于Django Rest 框架和 CSVRenderer的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest 框架和 CSVRenderer

电子邮件验证和密码重置 - django rest 框架和 angularjs

Django Rest 框架和 JSONField

django rest框架和表单:怎么做

CSRF 和 CORS 与 Django(REST 框架)

Django rest 框架和跨源请求