У меня есть рабочий сайт Django 1.8, и я хочу добавить RESTful API, используя django-rest-framework. Я хотел бы поддержать CSV, а также форматы JSON, и я озадачен тем, как это сделать.Возврат CSV-формата из django-rest-framework?
В api/urls.py
у меня есть это:
from django.conf.urls import url, include
from rest_framework import routers
from rest_framework.urlpatterns import format_suffix_patterns
import views
router = routers.DefaultRouter()
urlpatterns = [
url(r'^organisation/$', views.organisation),
]
urlpatterns = format_suffix_patterns(urlpatterns,
allowed=['json', 'csv'])
И у меня есть это в api/views.py
:
class JSONResponse(HttpResponse):
"""
An HttpResponse that renders its content into JSON.
"""
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
@api_view(['GET'])
def organisation(request, format=None):
code = request.query_params.get('code', None)
print 'format', format
organisation = Organisation.objects.get(code=code)
serializer = OrgSerializer(Organisation)
data = serializer.data
return JSONResponse(data)
Но если я пойду в api/1.0/organisation.csv?code=123
, я все еще вижу:
format json
в консоль.
Что я делаю неправильно? И как мне вернуть CSV, как только мне удастся захватить формат? (Я подозреваю, что я, вероятно, ошибаюсь, написав свой собственный JSONResponse
.)