Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
b79833ec
Commit
b79833ec
authored
Sep 06, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move generic views into seperate module
parent
c7070346
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
117 additions
and
132 deletions
+117
-132
djangorestframework/generics.py
+112
-0
djangorestframework/views.py
+5
-132
No files found.
djangorestframework/generics.py
0 → 100644
View file @
b79833ec
"""
Generic views that provide commmonly needed behaviour.
"""
from
djangorestframework
import
views
,
mixins
from
django.views.generic.detail
import
SingleObjectMixin
from
django.views.generic.list
import
MultipleObjectMixin
### Base classes for the generic views ###
class
BaseView
(
views
.
APIView
):
"""
Base class for all other generic views.
"""
serializer_class
=
None
def
get_serializer
(
self
,
data
=
None
,
files
=
None
,
instance
=
None
):
# TODO: add support for files
# TODO: add support for seperate serializer/deserializer
context
=
{
'request'
:
self
.
request
,
'format'
:
self
.
kwargs
.
get
(
'format'
,
None
)
}
return
self
.
serializer_class
(
data
,
instance
=
instance
,
context
=
context
)
class
MultipleObjectBaseView
(
MultipleObjectMixin
,
BaseView
):
"""
Base class for generic views onto a queryset.
"""
pass
class
SingleObjectBaseView
(
SingleObjectMixin
,
BaseView
):
"""
Base class for generic views onto a model instance.
"""
def
get_object
(
self
):
"""
Override default to add support for object-level permissions.
"""
super
(
self
,
SingleObjectBaseView
)
.
get_object
()
self
.
check_permissions
(
self
.
request
,
self
.
object
)
### Concrete view classes that provide method handlers ###
### by composing the mixin classes with a base view. ###
class
ListAPIView
(
mixins
.
ListModelMixin
,
mixins
.
MetadataMixin
,
MultipleObjectBaseView
):
"""
Concrete view for listing a queryset.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
list
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
RootAPIView
(
mixins
.
ListModelMixin
,
mixins
.
CreateModelMixin
,
mixins
.
MetadataMixin
,
MultipleObjectBaseView
):
"""
Concrete view for listing a queryset or creating a model instance.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
list
(
request
,
*
args
,
**
kwargs
)
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
create
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
DetailAPIView
(
mixins
.
RetrieveModelMixin
,
mixins
.
MetadataMixin
,
SingleObjectBaseView
):
"""
Concrete view for retrieving a model instance.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
retrieve
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
InstanceAPIView
(
mixins
.
RetrieveModelMixin
,
mixins
.
UpdateModelMixin
,
mixins
.
DestroyModelMixin
,
mixins
.
MetadataMixin
,
SingleObjectBaseView
):
"""
Concrete view for retrieving, updating or deleting a model instance.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
retrieve
(
request
,
*
args
,
**
kwargs
)
def
put
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
update
(
request
,
*
args
,
**
kwargs
)
def
delete
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
destroy
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
djangorestframework/views.py
View file @
b79833ec
...
...
@@ -11,14 +11,12 @@ from django.http import Http404
from
django.utils.html
import
escape
from
django.utils.safestring
import
mark_safe
from
django.views.decorators.csrf
import
csrf_exempt
from
django.views.generic.detail
import
SingleObjectMixin
from
django.views.generic.list
import
MultipleObjectMixin
from
djangorestframework.compat
import
View
as
_View
,
apply_markdown
from
djangorestframework.response
import
Response
from
djangorestframework.request
import
Request
from
djangorestframework.settings
import
api_settings
from
djangorestframework
import
parsers
,
authentication
,
status
,
exceptions
,
mixi
ns
from
djangorestframework
import
status
,
exceptio
ns
def
_remove_trailing_string
(
content
,
trailing
):
...
...
@@ -57,30 +55,10 @@ def _camelcase_to_spaces(content):
class
APIView
(
_View
):
renderers
=
api_settings
.
DEFAULT_RENDERERS
"""
List of renderer classes the view can serialize the response with, ordered by preference.
"""
parsers
=
parsers
.
DEFAULT_PARSERS
"""
List of parser classes the view can parse the request with.
"""
authentication
=
(
authentication
.
SessionAuthentication
,
authentication
.
UserBasicAuthentication
)
"""
List of all authenticating methods to attempt.
"""
throttle_classes
=
()
"""
List of all throttles to check.
"""
permission_classes
=
()
"""
List of all permissions that must be checked.
"""
parsers
=
api_settings
.
DEFAULT_PARSERS
authentication
=
api_settings
.
DEFAULT_AUTHENTICATION
throttle_classes
=
api_settings
.
DEFAULT_THROTTLES
permission_classes
=
api_settings
.
DEFAULT_PERMISSIONS
@classmethod
def
as_view
(
cls
,
**
initkwargs
):
...
...
@@ -300,108 +278,3 @@ class APIView(_View):
self
.
response
=
self
.
finalize_response
(
request
,
response
,
*
args
,
**
kwargs
)
return
self
.
response
# Abstract view classes that do not provide any method handlers,
# but which provide required behaviour for concrete views to build on.
class
BaseView
(
APIView
):
"""
Base class for all generic views.
"""
serializer_class
=
None
def
get_serializer
(
self
,
data
=
None
,
files
=
None
,
instance
=
None
):
# TODO: add support for files
context
=
{
'request'
:
self
.
request
,
'format'
:
self
.
kwargs
.
get
(
'format'
,
None
)
}
return
self
.
serializer_class
(
data
,
instance
=
instance
,
context
=
context
)
class
MultipleObjectBaseView
(
MultipleObjectMixin
,
BaseView
):
"""
Base class for generic views onto a queryset.
"""
pass
class
SingleObjectBaseView
(
SingleObjectMixin
,
BaseView
):
"""
Base class for generic views onto a model instance.
"""
def
get_object
(
self
):
"""
Override default to add support for object-level permissions.
"""
super
(
self
,
SingleObjectBaseView
)
.
get_object
()
self
.
check_permissions
(
self
.
request
,
self
.
object
)
# Concrete view classes that provide method handlers
# by composing the mixin classes with a base view.
class
ListAPIView
(
mixins
.
ListModelMixin
,
mixins
.
MetadataMixin
,
MultipleObjectBaseView
):
"""
Concrete view for listing a queryset.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
list
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
RootAPIView
(
mixins
.
ListModelMixin
,
mixins
.
CreateModelMixin
,
mixins
.
MetadataMixin
,
MultipleObjectBaseView
):
"""
Concrete view for listing a queryset or creating a model instance.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
list
(
request
,
*
args
,
**
kwargs
)
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
create
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
DetailAPIView
(
mixins
.
RetrieveModelMixin
,
mixins
.
MetadataMixin
,
SingleObjectBaseView
):
"""
Concrete view for retrieving a model instance.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
retrieve
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
InstanceAPIView
(
mixins
.
RetrieveModelMixin
,
mixins
.
UpdateModelMixin
,
mixins
.
DestroyModelMixin
,
mixins
.
MetadataMixin
,
SingleObjectBaseView
):
"""
Concrete view for retrieving, updating or deleting a model instance.
"""
def
get
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
retrieve
(
request
,
*
args
,
**
kwargs
)
def
put
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
update
(
request
,
*
args
,
**
kwargs
)
def
delete
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
destroy
(
request
,
*
args
,
**
kwargs
)
def
options
(
self
,
request
,
*
args
,
**
kwargs
):
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment