aboutsummaryrefslogtreecommitdiffstats
path: root/examples/requestexample/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/requestexample/views.py')
-rw-r--r--examples/requestexample/views.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/examples/requestexample/views.py b/examples/requestexample/views.py
new file mode 100644
index 00000000..aa8a734f
--- /dev/null
+++ b/examples/requestexample/views.py
@@ -0,0 +1,76 @@
+from djangorestframework.compat import View
+from django.http import HttpResponse
+from django.core.urlresolvers import reverse
+
+from djangorestframework.mixins import RequestMixin
+from djangorestframework.views import View as DRFView
+from djangorestframework import parsers
+
+
+class RequestExampleView(DRFView):
+ """
+ A container view for request examples.
+ """
+
+ def get(self, request):
+ return [{'name': 'request.DATA Example', 'url': reverse('request-content')},]
+
+
+class MyBaseViewUsingEnhancedRequest(RequestMixin, View):
+ """
+ Base view enabling the usage of enhanced requests with user defined views.
+ """
+
+ parsers = parsers.DEFAULT_PARSERS
+
+ def dispatch(self, request, *args, **kwargs):
+ self.request = request
+ request = self.get_request()
+ return super(MyBaseViewUsingEnhancedRequest, self).dispatch(request, *args, **kwargs)
+
+
+class EchoRequestContentView(MyBaseViewUsingEnhancedRequest):
+ """
+ A view that just reads the items in `request.DATA` and echoes them back.
+ """
+
+ def post(self, request, *args, **kwargs):
+ return HttpResponse(("Found %s in request.DATA, content : %s" %
+ (type(request.DATA), request.DATA)))
+
+ def put(self, request, *args, **kwargs):
+ return HttpResponse(("Found %s in request.DATA, content : %s" %
+ (type(request.DATA), request.DATA)))
+
+
+class MockView(DRFView):
+ """
+ A view that just acts as a proxy to call non-djangorestframework views, while still
+ displaying the browsable API interface.
+ """
+
+ view_class = None
+
+ def dispatch(self, request, *args, **kwargs):
+ self.request = request
+ if self.get_request().method in ['PUT', 'POST']:
+ self.response = self.view_class.as_view()(request, *args, **kwargs)
+ return super(MockView, self).dispatch(request, *args, **kwargs)
+
+ def get(self, request, *args, **kwargs):
+ return
+
+ def put(self, request, *args, **kwargs):
+ return self.response.content
+
+ def post(self, request, *args, **kwargs):
+ return self.response.content
+
+ def __getattribute__(self, name):
+ if name == '__name__':
+ return self.view_class.__name__
+ elif name == '__doc__':
+ return self.view_class.__doc__
+ else:
+ return super(MockView, self).__getattribute__(name)
+