views.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import asyncio
  2. from http import HTTPStatus
  3. from django.core.exceptions import SuspiciousOperation
  4. from django.db import connection, transaction
  5. from django.http import HttpResponse, StreamingHttpResponse
  6. from django.views.decorators.csrf import csrf_exempt
  7. def regular(request):
  8. return HttpResponse(b"regular content")
  9. def no_response(request):
  10. pass
  11. class NoResponse:
  12. def __call__(self, request):
  13. pass
  14. def streaming(request):
  15. return StreamingHttpResponse([b"streaming", b" ", b"content"])
  16. def in_transaction(request):
  17. return HttpResponse(str(connection.in_atomic_block))
  18. @transaction.non_atomic_requests
  19. def not_in_transaction(request):
  20. return HttpResponse(str(connection.in_atomic_block))
  21. def suspicious(request):
  22. raise SuspiciousOperation('dubious')
  23. @csrf_exempt
  24. def malformed_post(request):
  25. request.POST
  26. return HttpResponse()
  27. def httpstatus_enum(request):
  28. return HttpResponse(status=HTTPStatus.OK)
  29. async def async_regular(request):
  30. return HttpResponse(b'regular content')
  31. async def async_unawaited(request):
  32. """Return an unawaited coroutine (common error for async views)."""
  33. return asyncio.sleep(0)