renderers.py 777 B

1234567891011121314151617181920212223242526
  1. import json
  2. import yaml
  3. from rest_framework import renderers
  4. class PlainTextRenderer(renderers.BaseRenderer):
  5. # Disregard Accept header
  6. media_type = "*/*"
  7. format = "txt"
  8. def render(self, data, media_type=None, renderer_context=None):
  9. renderer_context = renderer_context or {}
  10. response = renderer_context.get("response")
  11. if response and response.exception:
  12. response["Content-Type"] = "text/plain"
  13. try:
  14. return data["detail"]
  15. except:
  16. data = json.loads(
  17. json.dumps(data)
  18. ) # stringify exception objects in potentially nested data structure
  19. return yaml.safe_dump(data, default_flow_style=False)
  20. return data