mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-23 10:03:57 +03:00
Minor tweaks
This commit is contained in:
parent
c28b719333
commit
da4fa9bded
|
@ -2,27 +2,6 @@ from djangorestframework import status
|
||||||
from djangorestframework.response import Response
|
from djangorestframework.response import Response
|
||||||
|
|
||||||
|
|
||||||
class MetadataMixin(object):
|
|
||||||
"""
|
|
||||||
Should be mixed in with any `BaseView`.
|
|
||||||
"""
|
|
||||||
def metadata(self, request, *args, **kwargs):
|
|
||||||
content = {
|
|
||||||
'name': self.get_name(),
|
|
||||||
'description': self.get_description(),
|
|
||||||
'renders': self._rendered_media_types,
|
|
||||||
'parses': self._parsed_media_types,
|
|
||||||
}
|
|
||||||
# TODO: Add 'fields', from serializer info.
|
|
||||||
# form = self.get_bound_form()
|
|
||||||
# if form is not None:
|
|
||||||
# field_name_types = {}
|
|
||||||
# for name, field in form.fields.iteritems():
|
|
||||||
# field_name_types[name] = field.__class__.__name__
|
|
||||||
# content['fields'] = field_name_types
|
|
||||||
raise Response(content, status=status.HTTP_200_OK)
|
|
||||||
|
|
||||||
|
|
||||||
class CreateModelMixin(object):
|
class CreateModelMixin(object):
|
||||||
"""
|
"""
|
||||||
Create a model instance.
|
Create a model instance.
|
||||||
|
@ -83,3 +62,25 @@ class DestroyModelMixin(object):
|
||||||
self.object = self.get_object()
|
self.object = self.get_object()
|
||||||
self.object.delete()
|
self.object.delete()
|
||||||
return Response(status=status.HTTP_204_NO_CONTENT)
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
|
||||||
|
class MetadataMixin(object):
|
||||||
|
"""
|
||||||
|
Return a dicitonary of view metadata.
|
||||||
|
Should be mixed in with any `BaseView`.
|
||||||
|
"""
|
||||||
|
def metadata(self, request, *args, **kwargs):
|
||||||
|
content = {
|
||||||
|
'name': self.get_name(),
|
||||||
|
'description': self.get_description(),
|
||||||
|
'renders': self._rendered_media_types,
|
||||||
|
'parses': self._parsed_media_types,
|
||||||
|
}
|
||||||
|
# TODO: Add 'fields', from serializer info.
|
||||||
|
# form = self.get_bound_form()
|
||||||
|
# if form is not None:
|
||||||
|
# field_name_types = {}
|
||||||
|
# for name, field in form.fields.iteritems():
|
||||||
|
# field_name_types[name] = field.__class__.__name__
|
||||||
|
# content['fields'] = field_name_types
|
||||||
|
raise Response(content, status=status.HTTP_200_OK)
|
||||||
|
|
|
@ -234,6 +234,9 @@ class Request(object):
|
||||||
user = authentication.authenticate(self)
|
user = authentication.authenticate(self)
|
||||||
if user:
|
if user:
|
||||||
return user
|
return user
|
||||||
|
return self._not_authenticated()
|
||||||
|
|
||||||
|
def _not_authenticated(self):
|
||||||
return AnonymousUser()
|
return AnonymousUser()
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
|
|
|
@ -224,18 +224,19 @@ class APIView(_View):
|
||||||
|
|
||||||
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 runs prior to anything else in the view.
|
||||||
anything else.
|
It should return the initial request object.
|
||||||
Required if you want to do things like set `request.upload_handlers`
|
|
||||||
before the authentication and dispatch handling is run.
|
You may need to override this if you want to do things like set
|
||||||
|
`request.upload_handlers` before the authentication and dispatch
|
||||||
|
handling is run.
|
||||||
"""
|
"""
|
||||||
pass
|
return Request(request, parsers=self.parsers, authentication=self.authentication)
|
||||||
|
|
||||||
def final(self, request, response, *args, **kargs):
|
def final(self, request, response, *args, **kargs):
|
||||||
"""
|
"""
|
||||||
This method is a hook for any code that needs to run after everything
|
This method runs after everything else in the view.
|
||||||
else in the view.
|
It should return the final response object.
|
||||||
Returns the final response object.
|
|
||||||
"""
|
"""
|
||||||
if isinstance(response, Response):
|
if isinstance(response, Response):
|
||||||
response.view = self
|
response.view = self
|
||||||
|
@ -269,14 +270,12 @@ class APIView(_View):
|
||||||
# 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 = Request(request, parsers=self.parsers, authentication=self.authentication)
|
|
||||||
self.request = request
|
|
||||||
self.args = args
|
self.args = args
|
||||||
self.kwargs = kwargs
|
self.kwargs = kwargs
|
||||||
self.headers = self.default_response_headers
|
self.headers = self.default_response_headers
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.initial(request, *args, **kwargs)
|
self.request = self.initial(request, *args, **kwargs)
|
||||||
|
|
||||||
# Check that the request is allowed
|
# Check that the request is allowed
|
||||||
self.check_permissions(request)
|
self.check_permissions(request)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user