mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 11:33:59 +03:00
Remove RequestMixinx / ReponseMixin
This commit is contained in:
parent
372e945097
commit
4e4584a01a
|
@ -11,13 +11,10 @@ from djangorestframework import status
|
||||||
from djangorestframework.renderers import BaseRenderer
|
from djangorestframework.renderers import BaseRenderer
|
||||||
from djangorestframework.resources import Resource, FormResource, ModelResource
|
from djangorestframework.resources import Resource, FormResource, ModelResource
|
||||||
from djangorestframework.response import Response, ImmediateResponse
|
from djangorestframework.response import Response, ImmediateResponse
|
||||||
from djangorestframework.request import Request
|
|
||||||
|
|
||||||
|
|
||||||
__all__ = (
|
__all__ = (
|
||||||
# Base behavior mixins
|
# Base behavior mixins
|
||||||
'RequestMixin',
|
|
||||||
'ResponseMixin',
|
|
||||||
'PermissionsMixin',
|
'PermissionsMixin',
|
||||||
'ResourceMixin',
|
'ResourceMixin',
|
||||||
# Model behavior mixins
|
# Model behavior mixins
|
||||||
|
@ -30,76 +27,6 @@ __all__ = (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
########## Request Mixin ##########
|
|
||||||
|
|
||||||
class RequestMixin(object):
|
|
||||||
"""
|
|
||||||
`Mixin` class enabling the use of :class:`request.Request` in your views.
|
|
||||||
"""
|
|
||||||
|
|
||||||
request_class = Request
|
|
||||||
"""
|
|
||||||
The class to use as a wrapper for the original request object.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def create_request(self, request):
|
|
||||||
"""
|
|
||||||
Creates and returns an instance of :class:`request.Request`.
|
|
||||||
This new instance wraps the `request` passed as a parameter, and use
|
|
||||||
the parsers set on the view.
|
|
||||||
"""
|
|
||||||
return self.request_class(request, parsers=self.parsers, authentication=self.authentication)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _parsed_media_types(self):
|
|
||||||
"""
|
|
||||||
Return a list of all the media types that this view can parse.
|
|
||||||
"""
|
|
||||||
return [parser.media_type for parser in self.parsers]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _default_parser(self):
|
|
||||||
"""
|
|
||||||
Return the view's default parser class.
|
|
||||||
"""
|
|
||||||
return self.parsers[0]
|
|
||||||
|
|
||||||
|
|
||||||
########## ResponseMixin ##########
|
|
||||||
|
|
||||||
class ResponseMixin(object):
|
|
||||||
"""
|
|
||||||
`Mixin` class enabling the use of :class:`response.Response` in your views.
|
|
||||||
"""
|
|
||||||
|
|
||||||
renderers = ()
|
|
||||||
"""
|
|
||||||
The set of response renderers that the view can handle.
|
|
||||||
Should be a tuple/list of classes as described in the :mod:`renderers` module.
|
|
||||||
"""
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _rendered_media_types(self):
|
|
||||||
"""
|
|
||||||
Return an list of all the media types that this response can render.
|
|
||||||
"""
|
|
||||||
return [renderer.media_type for renderer in self.renderers]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _rendered_formats(self):
|
|
||||||
"""
|
|
||||||
Return a list of all the formats that this response can render.
|
|
||||||
"""
|
|
||||||
return [renderer.format for renderer in self.renderers]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def _default_renderer(self):
|
|
||||||
"""
|
|
||||||
Return the response's default renderer class.
|
|
||||||
"""
|
|
||||||
return self.renderers[0]
|
|
||||||
|
|
||||||
|
|
||||||
########## Permissions Mixin ##########
|
########## Permissions Mixin ##########
|
||||||
|
|
||||||
class PermissionsMixin(object):
|
class PermissionsMixin(object):
|
||||||
|
|
|
@ -6,7 +6,6 @@ from django.test import TestCase
|
||||||
from djangorestframework import status
|
from djangorestframework import status
|
||||||
from djangorestframework.compat import View as DjangoView
|
from djangorestframework.compat import View as DjangoView
|
||||||
from djangorestframework.response import Response
|
from djangorestframework.response import Response
|
||||||
from djangorestframework.mixins import ResponseMixin
|
|
||||||
from djangorestframework.views import View
|
from djangorestframework.views import View
|
||||||
from djangorestframework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \
|
from djangorestframework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \
|
||||||
XMLRenderer, JSONPRenderer, DocumentingHTMLRenderer
|
XMLRenderer, JSONPRenderer, DocumentingHTMLRenderer
|
||||||
|
@ -40,7 +39,7 @@ class RendererB(BaseRenderer):
|
||||||
return RENDERER_B_SERIALIZER(obj)
|
return RENDERER_B_SERIALIZER(obj)
|
||||||
|
|
||||||
|
|
||||||
class MockView(ResponseMixin, DjangoView):
|
class MockView(View):
|
||||||
renderers = (RendererA, RendererB)
|
renderers = (RendererA, RendererB)
|
||||||
|
|
||||||
def get(self, request, **kwargs):
|
def get(self, request, **kwargs):
|
||||||
|
|
|
@ -12,6 +12,7 @@ from django.views.decorators.csrf import csrf_exempt
|
||||||
|
|
||||||
from djangorestframework.compat import View as DjangoView, apply_markdown
|
from djangorestframework.compat import View as DjangoView, apply_markdown
|
||||||
from djangorestframework.response import Response, ImmediateResponse
|
from djangorestframework.response import Response, ImmediateResponse
|
||||||
|
from djangorestframework.request import Request
|
||||||
from djangorestframework.mixins import *
|
from djangorestframework.mixins import *
|
||||||
from djangorestframework import resources, renderers, parsers, authentication, permissions, status
|
from djangorestframework import resources, renderers, parsers, authentication, permissions, status
|
||||||
|
|
||||||
|
@ -67,7 +68,7 @@ _resource_classes = (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class View(ResourceMixin, RequestMixin, ResponseMixin, PermissionsMixin, DjangoView):
|
class View(ResourceMixin, PermissionsMixin, DjangoView):
|
||||||
"""
|
"""
|
||||||
Handles incoming requests and maps them to REST operations.
|
Handles incoming requests and maps them to REST operations.
|
||||||
Performs request deserialization, response serialization, authentication and input validation.
|
Performs request deserialization, response serialization, authentication and input validation.
|
||||||
|
@ -187,6 +188,41 @@ class View(ResourceMixin, RequestMixin, ResponseMixin, PermissionsMixin, DjangoV
|
||||||
}
|
}
|
||||||
raise ImmediateResponse(content, status.HTTP_405_METHOD_NOT_ALLOWED)
|
raise ImmediateResponse(content, status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _parsed_media_types(self):
|
||||||
|
"""
|
||||||
|
Return a list of all the media types that this view can parse.
|
||||||
|
"""
|
||||||
|
return [parser.media_type for parser in self.parsers]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _default_parser(self):
|
||||||
|
"""
|
||||||
|
Return the view's default parser class.
|
||||||
|
"""
|
||||||
|
return self.parsers[0]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _rendered_media_types(self):
|
||||||
|
"""
|
||||||
|
Return an list of all the media types that this response can render.
|
||||||
|
"""
|
||||||
|
return [renderer.media_type for renderer in self.renderers]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _rendered_formats(self):
|
||||||
|
"""
|
||||||
|
Return a list of all the formats that this response can render.
|
||||||
|
"""
|
||||||
|
return [renderer.format for renderer in self.renderers]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _default_renderer(self):
|
||||||
|
"""
|
||||||
|
Return the response's default renderer class.
|
||||||
|
"""
|
||||||
|
return self.renderers[0]
|
||||||
|
|
||||||
def initial(self, request, *args, **kargs):
|
def initial(self, request, *args, **kargs):
|
||||||
"""
|
"""
|
||||||
This method is a hook for any code that needs to run prior to
|
This method is a hook for any code that needs to run prior to
|
||||||
|
@ -213,7 +249,7 @@ class View(ResourceMixin, RequestMixin, ResponseMixin, PermissionsMixin, DjangoV
|
||||||
# all other authentication is CSRF exempt.
|
# all other authentication is CSRF exempt.
|
||||||
@csrf_exempt
|
@csrf_exempt
|
||||||
def dispatch(self, request, *args, **kwargs):
|
def dispatch(self, request, *args, **kwargs):
|
||||||
request = self.create_request(request)
|
request = Request(request, parsers=self.parsers, authentication=self.authentication)
|
||||||
self.request = request
|
self.request = request
|
||||||
|
|
||||||
self.args = args
|
self.args = args
|
||||||
|
|
Loading…
Reference in New Issue
Block a user