From 152c385f4de37558fe4e522abad5b97f0cf7ddce Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Wed, 25 Jan 2012 00:11:54 +0200 Subject: enhanced request how-to + example --- examples/requestexample/__init__.py | 0 examples/requestexample/models.py | 3 ++ examples/requestexample/tests.py | 0 examples/requestexample/urls.py | 7 ++++ examples/requestexample/views.py | 76 +++++++++++++++++++++++++++++++++++++ examples/sandbox/views.py | 4 +- examples/settings.py | 1 + examples/urls.py | 1 + 8 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 examples/requestexample/__init__.py create mode 100644 examples/requestexample/models.py create mode 100644 examples/requestexample/tests.py create mode 100644 examples/requestexample/urls.py create mode 100644 examples/requestexample/views.py (limited to 'examples') diff --git a/examples/requestexample/__init__.py b/examples/requestexample/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/requestexample/models.py b/examples/requestexample/models.py new file mode 100644 index 00000000..71a83623 --- /dev/null +++ b/examples/requestexample/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/examples/requestexample/tests.py b/examples/requestexample/tests.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/requestexample/urls.py b/examples/requestexample/urls.py new file mode 100644 index 00000000..a5e3356a --- /dev/null +++ b/examples/requestexample/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls.defaults import patterns, url +from requestexample.views import RequestExampleView, MockView, EchoRequestContentView + +urlpatterns = patterns('', + url(r'^$', RequestExampleView.as_view(), name='request-example'), + url(r'^content$', MockView.as_view(view_class=EchoRequestContentView), name='request-content'), +) 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) + diff --git a/examples/sandbox/views.py b/examples/sandbox/views.py index f7a3542d..998887a7 100644 --- a/examples/sandbox/views.py +++ b/examples/sandbox/views.py @@ -23,6 +23,7 @@ class Sandbox(View): 5. A code highlighting API. 6. A blog posts and comments API. 7. A basic example using permissions. + 8. A basic example using enhanced request. Please feel free to browse, create, edit and delete the resources in these examples.""" @@ -33,5 +34,6 @@ class Sandbox(View): {'name': 'Object store API', 'url': reverse('object-store-root')}, {'name': 'Code highlighting API', 'url': reverse('pygments-root')}, {'name': 'Blog posts API', 'url': reverse('blog-posts-root')}, - {'name': 'Permissions example', 'url': reverse('permissions-example')} + {'name': 'Permissions example', 'url': reverse('permissions-example')}, + {'name': 'Simple request mixin example', 'url': reverse('request-example')} ] diff --git a/examples/settings.py b/examples/settings.py index e12b7f3f..3b024ea1 100644 --- a/examples/settings.py +++ b/examples/settings.py @@ -112,6 +112,7 @@ INSTALLED_APPS = ( 'pygments_api', 'blogpost', 'permissionsexample', + 'requestexample', ) import os diff --git a/examples/urls.py b/examples/urls.py index 08d97a14..b71c0a20 100644 --- a/examples/urls.py +++ b/examples/urls.py @@ -11,6 +11,7 @@ urlpatterns = patterns('', (r'^pygments/', include('pygments_api.urls')), (r'^blog-post/', include('blogpost.urls')), (r'^permissions-example/', include('permissionsexample.urls')), + (r'^request-example/', include('requestexample.urls')), (r'^', include('djangorestframework.urls')), ) -- cgit v1.2.3 From 6963fd3623ee217fe489abb25f0ffa8c0781e4cd Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Tue, 7 Feb 2012 16:22:14 +0200 Subject: some docs for Request/Response/mixins --- examples/requestexample/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'examples') diff --git a/examples/requestexample/views.py b/examples/requestexample/views.py index aa8a734f..5411a323 100644 --- a/examples/requestexample/views.py +++ b/examples/requestexample/views.py @@ -21,11 +21,10 @@ class MyBaseViewUsingEnhancedRequest(RequestMixin, View): Base view enabling the usage of enhanced requests with user defined views. """ - parsers = parsers.DEFAULT_PARSERS + parser_classes = parsers.DEFAULT_PARSERS def dispatch(self, request, *args, **kwargs): - self.request = request - request = self.get_request() + request = self.prepare_request(request) return super(MyBaseViewUsingEnhancedRequest, self).dispatch(request, *args, **kwargs) -- cgit v1.2.3 From 2cdff1b01e3aca6c56cef433e786e3ae75362739 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Tue, 7 Feb 2012 16:52:15 +0200 Subject: modified examples, somethin' still broken, can't find what --- examples/mixin/urls.py | 8 ++++---- examples/objectstore/views.py | 10 ++++++---- examples/permissionsexample/views.py | 9 +++++---- examples/pygments_api/views.py | 6 +++--- examples/requestexample/urls.py | 4 +++- examples/requestexample/views.py | 35 ++--------------------------------- examples/resourceexample/views.py | 8 ++++---- examples/sandbox/views.py | 5 +++-- examples/views.py | 34 ++++++++++++++++++++++++++++++++++ 9 files changed, 64 insertions(+), 55 deletions(-) create mode 100644 examples/views.py (limited to 'examples') diff --git a/examples/mixin/urls.py b/examples/mixin/urls.py index a3da3b2c..6e9e497e 100644 --- a/examples/mixin/urls.py +++ b/examples/mixin/urls.py @@ -10,12 +10,12 @@ from django.core.urlresolvers import reverse class ExampleView(ResponseMixin, View): """An example view using Django 1.3's class based views. Uses djangorestframework's RendererMixin to provide support for multiple output formats.""" - renderers = DEFAULT_RENDERERS + renderer_classes = DEFAULT_RENDERERS def get(self, request): - response = Response(200, {'description': 'Some example content', - 'url': reverse('mixin-view')}) - return self.render(response) + response = Response({'description': 'Some example content', + 'url': reverse('mixin-view')}, status=200) + return self.prepare_response(response) urlpatterns = patterns('', diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index d85ed9f4..47f5147a 100644 --- a/examples/objectstore/views.py +++ b/examples/objectstore/views.py @@ -41,7 +41,7 @@ class ObjectStoreRoot(View): filepaths = [os.path.join(OBJECT_STORE_DIR, file) for file in os.listdir(OBJECT_STORE_DIR) if not file.startswith('.')] ctime_sorted_basenames = [item[0] for item in sorted([(os.path.basename(path), os.path.getctime(path)) for path in filepaths], key=operator.itemgetter(1), reverse=True)] - return [reverse('stored-object', kwargs={'key':key}) for key in ctime_sorted_basenames] + return Response([reverse('stored-object', kwargs={'key':key}) for key in ctime_sorted_basenames]) def post(self, request): """ @@ -51,7 +51,8 @@ class ObjectStoreRoot(View): pathname = os.path.join(OBJECT_STORE_DIR, key) pickle.dump(self.CONTENT, open(pathname, 'wb')) remove_oldest_files(OBJECT_STORE_DIR, MAX_FILES) - return Response(status.HTTP_201_CREATED, self.CONTENT, {'Location': reverse('stored-object', kwargs={'key':key})}) + self.headers['Location'] = reverse('stored-object', kwargs={'key':key}) + return Response(self.CONTENT, status=status.HTTP_201_CREATED) class StoredObject(View): @@ -67,7 +68,7 @@ class StoredObject(View): pathname = os.path.join(OBJECT_STORE_DIR, key) if not os.path.exists(pathname): return Response(status.HTTP_404_NOT_FOUND) - return pickle.load(open(pathname, 'rb')) + return Response(pickle.load(open(pathname, 'rb'))) def put(self, request, key): """ @@ -75,7 +76,7 @@ class StoredObject(View): """ pathname = os.path.join(OBJECT_STORE_DIR, key) pickle.dump(self.CONTENT, open(pathname, 'wb')) - return self.CONTENT + return Response(self.CONTENT) def delete(self, request, key): """ @@ -85,3 +86,4 @@ class StoredObject(View): if not os.path.exists(pathname): return Response(status.HTTP_404_NOT_FOUND) os.remove(pathname) + return Response() diff --git a/examples/permissionsexample/views.py b/examples/permissionsexample/views.py index 86f458f8..bcf6619c 100644 --- a/examples/permissionsexample/views.py +++ b/examples/permissionsexample/views.py @@ -1,4 +1,5 @@ from djangorestframework.views import View +from djangorestframework.response import Response from djangorestframework.permissions import PerUserThrottling, IsAuthenticated from django.core.urlresolvers import reverse @@ -9,7 +10,7 @@ class PermissionsExampleView(View): """ def get(self, request): - return [ + return Response([ { 'name': 'Throttling Example', 'url': reverse('throttled-resource') @@ -18,7 +19,7 @@ class PermissionsExampleView(View): 'name': 'Logged in example', 'url': reverse('loggedin-resource') }, - ] + ]) class ThrottlingExampleView(View): @@ -36,7 +37,7 @@ class ThrottlingExampleView(View): """ Handle GET requests. """ - return "Successful response to GET request because throttle is not yet active." + return Response("Successful response to GET request because throttle is not yet active.") class LoggedInExampleView(View): @@ -49,4 +50,4 @@ class LoggedInExampleView(View): permissions = (IsAuthenticated, ) def get(self, request): - return 'You have permission to view this resource' + return Response('You have permission to view this resource') diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index ffea60ae..44dd2caa 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -61,7 +61,7 @@ class PygmentsRoot(View): Return a list of all currently existing snippets. """ unique_ids = [os.path.split(f)[1] for f in list_dir_sorted_by_ctime(HIGHLIGHTED_CODE_DIR)] - return [reverse('pygments-instance', args=[unique_id]) for unique_id in unique_ids] + return Response([reverse('pygments-instance', args=[unique_id]) for unique_id in unique_ids]) def post(self, request): """ @@ -98,7 +98,7 @@ class PygmentsInstance(View): pathname = os.path.join(HIGHLIGHTED_CODE_DIR, unique_id) if not os.path.exists(pathname): return Response(status.HTTP_404_NOT_FOUND) - return open(pathname, 'r').read() + return Response(open(pathname, 'r').read()) def delete(self, request, unique_id): """ @@ -107,5 +107,5 @@ class PygmentsInstance(View): pathname = os.path.join(HIGHLIGHTED_CODE_DIR, unique_id) if not os.path.exists(pathname): return Response(status.HTTP_404_NOT_FOUND) - return os.remove(pathname) + return Response(os.remove(pathname)) diff --git a/examples/requestexample/urls.py b/examples/requestexample/urls.py index a5e3356a..3c31e4a9 100644 --- a/examples/requestexample/urls.py +++ b/examples/requestexample/urls.py @@ -1,5 +1,7 @@ from django.conf.urls.defaults import patterns, url -from requestexample.views import RequestExampleView, MockView, EchoRequestContentView +from requestexample.views import RequestExampleView, EchoRequestContentView +from examples.views import MockView + urlpatterns = patterns('', url(r'^$', RequestExampleView.as_view(), name='request-example'), diff --git a/examples/requestexample/views.py b/examples/requestexample/views.py index 5411a323..876db864 100644 --- a/examples/requestexample/views.py +++ b/examples/requestexample/views.py @@ -5,6 +5,7 @@ from django.core.urlresolvers import reverse from djangorestframework.mixins import RequestMixin from djangorestframework.views import View as DRFView from djangorestframework import parsers +from djangorestframework.response import Response class RequestExampleView(DRFView): @@ -13,7 +14,7 @@ class RequestExampleView(DRFView): """ def get(self, request): - return [{'name': 'request.DATA Example', 'url': reverse('request-content')},] + return Response([{'name': 'request.DATA Example', 'url': reverse('request-content')},]) class MyBaseViewUsingEnhancedRequest(RequestMixin, View): @@ -41,35 +42,3 @@ class EchoRequestContentView(MyBaseViewUsingEnhancedRequest): 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) - diff --git a/examples/resourceexample/views.py b/examples/resourceexample/views.py index e6b5eeb8..44c4176a 100644 --- a/examples/resourceexample/views.py +++ b/examples/resourceexample/views.py @@ -16,12 +16,12 @@ class ExampleView(View): """ Handle GET requests, returning a list of URLs pointing to 3 other views. """ - return {"Some other resources": [reverse('another-example', kwargs={'num':num}) for num in range(3)]} + return Response({"Some other resources": [reverse('another-example', kwargs={'num':num}) for num in range(3)]}) class AnotherExampleView(View): """ - A basic view, that can be handle GET and POST requests. + A basic view, that can handle GET and POST requests. Applies some simple form validation on POST requests. """ form = MyForm @@ -33,7 +33,7 @@ class AnotherExampleView(View): """ if int(num) > 2: return Response(status.HTTP_404_NOT_FOUND) - return "GET request to AnotherExampleResource %s" % num + return Response("GET request to AnotherExampleResource %s" % num) def post(self, request, num): """ @@ -42,4 +42,4 @@ class AnotherExampleView(View): """ if int(num) > 2: return Response(status.HTTP_404_NOT_FOUND) - return "POST request to AnotherExampleResource %s, with content: %s" % (num, repr(self.CONTENT)) + return Response("POST request to AnotherExampleResource %s, with content: %s" % (num, repr(self.CONTENT))) diff --git a/examples/sandbox/views.py b/examples/sandbox/views.py index 998887a7..49b59b40 100644 --- a/examples/sandbox/views.py +++ b/examples/sandbox/views.py @@ -2,6 +2,7 @@ from django.core.urlresolvers import reverse from djangorestframework.views import View +from djangorestframework.response import Response class Sandbox(View): @@ -28,7 +29,7 @@ class Sandbox(View): Please feel free to browse, create, edit and delete the resources in these examples.""" def get(self, request): - return [{'name': 'Simple Resource example', 'url': reverse('example-resource')}, + return Response([{'name': 'Simple Resource example', 'url': reverse('example-resource')}, {'name': 'Simple ModelResource example', 'url': reverse('model-resource-root')}, {'name': 'Simple Mixin-only example', 'url': reverse('mixin-view')}, {'name': 'Object store API', 'url': reverse('object-store-root')}, @@ -36,4 +37,4 @@ class Sandbox(View): {'name': 'Blog posts API', 'url': reverse('blog-posts-root')}, {'name': 'Permissions example', 'url': reverse('permissions-example')}, {'name': 'Simple request mixin example', 'url': reverse('request-example')} - ] + ]) diff --git a/examples/views.py b/examples/views.py new file mode 100644 index 00000000..606edc3a --- /dev/null +++ b/examples/views.py @@ -0,0 +1,34 @@ +from djangorestframework.views import View +from djangorestframework.response import Response + + +class MockView(View): + """ + 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): + request = self.prepare_request(request) + if 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 Response() + + def put(self, request, *args, **kwargs): + return Response(self.response.content) + + def post(self, request, *args, **kwargs): + return Response(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) -- cgit v1.2.3 From b33579a7a18c2cbc6e3789d4a7dc78c82fb0fe80 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Fri, 10 Feb 2012 11:05:20 +0200 Subject: attempt at fixing the examples --- examples/mixin/urls.py | 3 ++- examples/objectstore/views.py | 4 ++-- examples/pygments_api/views.py | 3 ++- examples/requestexample/urls.py | 4 ++-- examples/requestexample/views.py | 2 +- examples/views.py | 8 ++++---- 6 files changed, 13 insertions(+), 11 deletions(-) (limited to 'examples') diff --git a/examples/mixin/urls.py b/examples/mixin/urls.py index 6e9e497e..58cf370c 100644 --- a/examples/mixin/urls.py +++ b/examples/mixin/urls.py @@ -15,7 +15,8 @@ class ExampleView(ResponseMixin, View): def get(self, request): response = Response({'description': 'Some example content', 'url': reverse('mixin-view')}, status=200) - return self.prepare_response(response) + self.response = self.prepare_response(response) + return self.response urlpatterns = patterns('', diff --git a/examples/objectstore/views.py b/examples/objectstore/views.py index 47f5147a..ae545394 100644 --- a/examples/objectstore/views.py +++ b/examples/objectstore/views.py @@ -67,7 +67,7 @@ class StoredObject(View): """ pathname = os.path.join(OBJECT_STORE_DIR, key) if not os.path.exists(pathname): - return Response(status.HTTP_404_NOT_FOUND) + return Response(status=status.HTTP_404_NOT_FOUND) return Response(pickle.load(open(pathname, 'rb'))) def put(self, request, key): @@ -84,6 +84,6 @@ class StoredObject(View): """ pathname = os.path.join(OBJECT_STORE_DIR, key) if not os.path.exists(pathname): - return Response(status.HTTP_404_NOT_FOUND) + return Response(status=status.HTTP_404_NOT_FOUND) os.remove(pathname) return Response() diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index 44dd2caa..d59a52c0 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -81,7 +81,8 @@ class PygmentsRoot(View): remove_oldest_files(HIGHLIGHTED_CODE_DIR, MAX_FILES) - return Response(status.HTTP_201_CREATED, headers={'Location': reverse('pygments-instance', args=[unique_id])}) + self.headers['Location'] = reverse('pygments-instance', args=[unique_id]) + return Response(status.HTTP_201_CREATED) class PygmentsInstance(View): diff --git a/examples/requestexample/urls.py b/examples/requestexample/urls.py index 3c31e4a9..d644a599 100644 --- a/examples/requestexample/urls.py +++ b/examples/requestexample/urls.py @@ -1,9 +1,9 @@ from django.conf.urls.defaults import patterns, url from requestexample.views import RequestExampleView, EchoRequestContentView -from examples.views import MockView +from examples.views import ProxyView urlpatterns = patterns('', url(r'^$', RequestExampleView.as_view(), name='request-example'), - url(r'^content$', MockView.as_view(view_class=EchoRequestContentView), name='request-content'), + url(r'^content$', ProxyView.as_view(view_class=EchoRequestContentView), name='request-content'), ) diff --git a/examples/requestexample/views.py b/examples/requestexample/views.py index 876db864..b5d2c1e7 100644 --- a/examples/requestexample/views.py +++ b/examples/requestexample/views.py @@ -25,7 +25,7 @@ class MyBaseViewUsingEnhancedRequest(RequestMixin, View): parser_classes = parsers.DEFAULT_PARSERS def dispatch(self, request, *args, **kwargs): - request = self.prepare_request(request) + self.request = request = self.create_request(request) return super(MyBaseViewUsingEnhancedRequest, self).dispatch(request, *args, **kwargs) diff --git a/examples/views.py b/examples/views.py index 606edc3a..e7ef2ec9 100644 --- a/examples/views.py +++ b/examples/views.py @@ -2,7 +2,7 @@ from djangorestframework.views import View from djangorestframework.response import Response -class MockView(View): +class ProxyView(View): """ A view that just acts as a proxy to call non-djangorestframework views, while still displaying the browsable API interface. @@ -11,10 +11,10 @@ class MockView(View): view_class = None def dispatch(self, request, *args, **kwargs): - request = self.prepare_request(request) + self.request = request = self.create_request(request) if request.method in ['PUT', 'POST']: self.response = self.view_class.as_view()(request, *args, **kwargs) - return super(MockView, self).dispatch(request, *args, **kwargs) + return super(ProxyView, self).dispatch(request, *args, **kwargs) def get(self, request, *args, **kwargs): return Response() @@ -31,4 +31,4 @@ class MockView(View): elif name == '__doc__': return self.view_class.__doc__ else: - return super(MockView, self).__getattribute__(name) + return super(ProxyView, self).__getattribute__(name) -- cgit v1.2.3 From 821844bb11e5262fb0dfc2fecf2add8fe18d3210 Mon Sep 17 00:00:00 2001 From: Sébastien Piquemal Date: Tue, 14 Feb 2012 10:05:28 +0200 Subject: fixed examples, corrected small bugs in the process --- examples/pygments_api/views.py | 4 ++-- examples/views.py | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) (limited to 'examples') diff --git a/examples/pygments_api/views.py b/examples/pygments_api/views.py index d59a52c0..852b6730 100644 --- a/examples/pygments_api/views.py +++ b/examples/pygments_api/views.py @@ -82,7 +82,7 @@ class PygmentsRoot(View): remove_oldest_files(HIGHLIGHTED_CODE_DIR, MAX_FILES) self.headers['Location'] = reverse('pygments-instance', args=[unique_id]) - return Response(status.HTTP_201_CREATED) + return Response(status=status.HTTP_201_CREATED) class PygmentsInstance(View): @@ -90,7 +90,7 @@ class PygmentsInstance(View): Simply return the stored highlighted HTML file with the correct mime type. This Resource only renders HTML and uses a standard HTML renderer rather than the renderers.DocumentingHTMLRenderer class. """ - renderers = (HTMLRenderer,) + renderer_classes = (HTMLRenderer,) def get(self, request, unique_id): """ diff --git a/examples/views.py b/examples/views.py index e7ef2ec9..e0e4c3c4 100644 --- a/examples/views.py +++ b/examples/views.py @@ -25,10 +25,8 @@ class ProxyView(View): def post(self, request, *args, **kwargs): return Response(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(ProxyView, self).__getattribute__(name) + def get_name(self): + return self.view_class.__name__ + + def get_description(self, html): + return self.view_class.__doc__ -- cgit v1.2.3