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
|
||||
|
||||
|
||||
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):
|
||||
"""
|
||||
Create a model instance.
|
||||
|
@ -83,3 +62,25 @@ class DestroyModelMixin(object):
|
|||
self.object = self.get_object()
|
||||
self.object.delete()
|
||||
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)
|
||||
if user:
|
||||
return user
|
||||
return self._not_authenticated()
|
||||
|
||||
def _not_authenticated(self):
|
||||
return AnonymousUser()
|
||||
|
||||
def __getattr__(self, name):
|
||||
|
|
|
@ -224,18 +224,19 @@ class APIView(_View):
|
|||
|
||||
def initial(self, request, *args, **kargs):
|
||||
"""
|
||||
This method is a hook for any code that needs to run prior to
|
||||
anything else.
|
||||
Required if you want to do things like set `request.upload_handlers`
|
||||
before the authentication and dispatch handling is run.
|
||||
This method runs prior to anything else in the view.
|
||||
It should return the initial request object.
|
||||
|
||||
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):
|
||||
"""
|
||||
This method is a hook for any code that needs to run after everything
|
||||
else in the view.
|
||||
Returns the final response object.
|
||||
This method runs after everything else in the view.
|
||||
It should return the final response object.
|
||||
"""
|
||||
if isinstance(response, Response):
|
||||
response.view = self
|
||||
|
@ -269,14 +270,12 @@ class APIView(_View):
|
|||
# all other authentication is CSRF exempt.
|
||||
@csrf_exempt
|
||||
def dispatch(self, request, *args, **kwargs):
|
||||
request = Request(request, parsers=self.parsers, authentication=self.authentication)
|
||||
self.request = request
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
self.headers = self.default_response_headers
|
||||
|
||||
try:
|
||||
self.initial(request, *args, **kwargs)
|
||||
self.request = self.initial(request, *args, **kwargs)
|
||||
|
||||
# Check that the request is allowed
|
||||
self.check_permissions(request)
|
||||
|
|
Loading…
Reference in New Issue
Block a user