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
c30e0795
Commit
c30e0795
authored
Oct 03, 2012
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rename generic views
parent
d1b99f35
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
44 additions
and
42 deletions
+44
-42
docs/tutorial/3-class-based-views.md
+2
-2
rest_framework/generics.py
+12
-12
rest_framework/renderers.py
+13
-11
rest_framework/resources.py
+2
-2
rest_framework/serializers.py
+1
-1
rest_framework/tests/generics.py
+12
-12
rest_framework/tests/pagination.py
+2
-2
No files found.
docs/tutorial/3-class-based-views.md
View file @
c30e0795
...
@@ -136,12 +136,12 @@ Using the mixin classes we've rewritten the views to use slightly less code than
...
@@ -136,12 +136,12 @@ Using the mixin classes we've rewritten the views to use slightly less code than
from rest_framework import generics
from rest_framework import generics
class CommentRoot(generics.
Root
APIView):
class CommentRoot(generics.
ListCreate
APIView):
model = Comment
model = Comment
serializer_class = CommentSerializer
serializer_class = CommentSerializer
class CommentInstance(generics.
Instance
APIView):
class CommentInstance(generics.
RetrieveUpdateDestroy
APIView):
model = Comment
model = Comment
serializer_class = CommentSerializer
serializer_class = CommentSerializer
...
...
rest_framework/generics.py
View file @
c30e0795
...
@@ -106,10 +106,10 @@ class ListAPIView(mixins.ListModelMixin,
...
@@ -106,10 +106,10 @@ class ListAPIView(mixins.ListModelMixin,
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
Root
APIView
(
mixins
.
ListModelMixin
,
class
ListCreate
APIView
(
mixins
.
ListModelMixin
,
mixins
.
CreateModelMixin
,
mixins
.
CreateModelMixin
,
mixins
.
MetadataMixin
,
mixins
.
MetadataMixin
,
MultipleObjectBaseView
):
MultipleObjectBaseView
):
"""
"""
Concrete view for listing a queryset or creating a model instance.
Concrete view for listing a queryset or creating a model instance.
"""
"""
...
@@ -123,9 +123,9 @@ class RootAPIView(mixins.ListModelMixin,
...
@@ -123,9 +123,9 @@ class RootAPIView(mixins.ListModelMixin,
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
Detail
APIView
(
mixins
.
RetrieveModelMixin
,
class
Retrieve
APIView
(
mixins
.
RetrieveModelMixin
,
mixins
.
MetadataMixin
,
mixins
.
MetadataMixin
,
SingleObjectBaseView
):
SingleObjectBaseView
):
"""
"""
Concrete view for retrieving a model instance.
Concrete view for retrieving a model instance.
"""
"""
...
@@ -136,11 +136,11 @@ class DetailAPIView(mixins.RetrieveModelMixin,
...
@@ -136,11 +136,11 @@ class DetailAPIView(mixins.RetrieveModelMixin,
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
return
self
.
metadata
(
request
,
*
args
,
**
kwargs
)
class
Instance
APIView
(
mixins
.
RetrieveModelMixin
,
class
RetrieveUpdateDestroy
APIView
(
mixins
.
RetrieveModelMixin
,
mixins
.
UpdateModelMixin
,
mixins
.
UpdateModelMixin
,
mixins
.
DestroyModelMixin
,
mixins
.
DestroyModelMixin
,
mixins
.
MetadataMixin
,
mixins
.
MetadataMixin
,
SingleObjectBaseView
):
SingleObjectBaseView
):
"""
"""
Concrete view for retrieving, updating or deleting a model instance.
Concrete view for retrieving, updating or deleting a model instance.
"""
"""
...
...
rest_framework/renderers.py
View file @
c30e0795
...
@@ -239,27 +239,29 @@ class DocumentingHTMLRenderer(BaseRenderer):
...
@@ -239,27 +239,29 @@ class DocumentingHTMLRenderer(BaseRenderer):
# We need to map our Fields to Django's Fields.
# We need to map our Fields to Django's Fields.
field_mapping
=
dict
([
field_mapping
=
dict
([
[
serializers
.
FloatField
.
__name__
,
forms
.
FloatField
],
[
serializers
.
FloatField
.
__name__
,
forms
.
FloatField
],
[
serializers
.
IntegerField
.
__name__
,
forms
.
IntegerField
],
[
serializers
.
IntegerField
.
__name__
,
forms
.
IntegerField
],
[
serializers
.
DateTimeField
.
__name__
,
forms
.
DateTimeField
],
[
serializers
.
DateTimeField
.
__name__
,
forms
.
DateTimeField
],
[
serializers
.
DateField
.
__name__
,
forms
.
DateField
],
[
serializers
.
DateField
.
__name__
,
forms
.
DateField
],
[
serializers
.
EmailField
.
__name__
,
forms
.
EmailField
],
[
serializers
.
EmailField
.
__name__
,
forms
.
EmailField
],
[
serializers
.
CharField
.
__name__
,
forms
.
CharField
],
[
serializers
.
CharField
.
__name__
,
forms
.
CharField
],
[
serializers
.
BooleanField
.
__name__
,
forms
.
BooleanField
]
[
serializers
.
BooleanField
.
__name__
,
forms
.
BooleanField
]
])
])
# Creating an on the fly form see: http://stackoverflow.com/questions/3915024/dynamically-creating-classes-python
# Creating an on the fly form see: http://stackoverflow.com/questions/3915024/dynamically-creating-classes-python
fields
=
{}
fields
=
{}
obj
ect
,
data
=
None
,
None
obj
,
data
=
None
,
None
if
getattr
(
view
,
'object'
,
None
):
if
getattr
(
view
,
'object'
,
None
):
object
=
view
.
object
obj
=
view
.
object
serializer
=
view
.
get_serializer
(
instance
=
object
)
serializer
=
view
.
get_serializer
(
instance
=
obj
)
for
k
,
v
in
serializer
.
fields
.
items
():
for
k
,
v
in
serializer
.
fields
.
items
():
if
v
.
readonly
:
if
v
.
readonly
:
continue
continue
fields
[
k
]
=
field_mapping
[
v
.
__class__
.
__name__
]()
fields
[
k
]
=
field_mapping
[
v
.
__class__
.
__name__
]()
OnTheFlyForm
=
type
(
"OnTheFlyForm"
,
(
forms
.
Form
,),
fields
)
OnTheFlyForm
=
type
(
"OnTheFlyForm"
,
(
forms
.
Form
,),
fields
)
if
obj
ect
and
not
view
.
request
.
method
==
'DELETE'
:
# Don't fill in the form when the object is deleted
if
obj
and
not
view
.
request
.
method
==
'DELETE'
:
# Don't fill in the form when the object is deleted
data
=
serializer
.
data
data
=
serializer
.
data
form_instance
=
OnTheFlyForm
(
data
)
form_instance
=
OnTheFlyForm
(
data
)
return
form_instance
return
form_instance
...
...
rest_framework/resources.py
View file @
c30e0795
...
@@ -62,8 +62,8 @@ class Resource(ResourceMixin, views.APIView):
...
@@ -62,8 +62,8 @@ class Resource(ResourceMixin, views.APIView):
class
ModelResource
(
ResourceMixin
,
views
.
APIView
):
class
ModelResource
(
ResourceMixin
,
views
.
APIView
):
root_class
=
generics
.
Root
APIView
root_class
=
generics
.
ListCreate
APIView
detail_class
=
generics
.
Instance
APIView
detail_class
=
generics
.
RetrieveUpdateDestroy
APIView
def
root_view
(
self
):
def
root_view
(
self
):
return
wrapped
(
self
,
self
.
root_class
())
return
wrapped
(
self
,
self
.
root_class
())
...
...
rest_framework/serializers.py
View file @
c30e0795
...
@@ -322,7 +322,7 @@ class ModelSerializer(RelatedField, Serializer):
...
@@ -322,7 +322,7 @@ class ModelSerializer(RelatedField, Serializer):
else
:
else
:
field
=
self
.
get_field
(
model_field
)
field
=
self
.
get_field
(
model_field
)
if
field
is
not
None
:
if
field
:
field
.
initialize
(
parent
=
self
,
model_field
=
model_field
)
field
.
initialize
(
parent
=
self
,
model_field
=
model_field
)
ret
[
model_field
.
name
]
=
field
ret
[
model_field
.
name
]
=
field
...
...
rest_framework/tests/generics.py
View file @
c30e0795
...
@@ -8,7 +8,7 @@ from rest_framework.tests.models import BasicModel
...
@@ -8,7 +8,7 @@ from rest_framework.tests.models import BasicModel
factory
=
RequestFactory
()
factory
=
RequestFactory
()
class
RootView
(
generics
.
Root
APIView
):
class
RootView
(
generics
.
ListCreate
APIView
):
"""
"""
Example description for OPTIONS.
Example description for OPTIONS.
"""
"""
...
@@ -16,7 +16,7 @@ class RootView(generics.RootAPIView):
...
@@ -16,7 +16,7 @@ class RootView(generics.RootAPIView):
paginate_by
=
None
paginate_by
=
None
class
InstanceView
(
generics
.
Instance
APIView
):
class
InstanceView
(
generics
.
RetrieveUpdateDestroy
APIView
):
"""
"""
Example description for OPTIONS.
Example description for OPTIONS.
"""
"""
...
@@ -40,7 +40,7 @@ class TestRootView(TestCase):
...
@@ -40,7 +40,7 @@ class TestRootView(TestCase):
def
test_get_root_view
(
self
):
def
test_get_root_view
(
self
):
"""
"""
GET requests to
Root
APIView should return list of objects.
GET requests to
ListCreate
APIView should return list of objects.
"""
"""
request
=
factory
.
get
(
'/'
)
request
=
factory
.
get
(
'/'
)
response
=
self
.
view
(
request
)
.
render
()
response
=
self
.
view
(
request
)
.
render
()
...
@@ -49,7 +49,7 @@ class TestRootView(TestCase):
...
@@ -49,7 +49,7 @@ class TestRootView(TestCase):
def
test_post_root_view
(
self
):
def
test_post_root_view
(
self
):
"""
"""
POST requests to
Root
APIView should create a new object.
POST requests to
ListCreate
APIView should create a new object.
"""
"""
content
=
{
'text'
:
'foobar'
}
content
=
{
'text'
:
'foobar'
}
request
=
factory
.
post
(
'/'
,
json
.
dumps
(
content
),
request
=
factory
.
post
(
'/'
,
json
.
dumps
(
content
),
...
@@ -62,7 +62,7 @@ class TestRootView(TestCase):
...
@@ -62,7 +62,7 @@ class TestRootView(TestCase):
def
test_put_root_view
(
self
):
def
test_put_root_view
(
self
):
"""
"""
PUT requests to
Root
APIView should not be allowed
PUT requests to
ListCreate
APIView should not be allowed
"""
"""
content
=
{
'text'
:
'foobar'
}
content
=
{
'text'
:
'foobar'
}
request
=
factory
.
put
(
'/'
,
json
.
dumps
(
content
),
request
=
factory
.
put
(
'/'
,
json
.
dumps
(
content
),
...
@@ -73,7 +73,7 @@ class TestRootView(TestCase):
...
@@ -73,7 +73,7 @@ class TestRootView(TestCase):
def
test_delete_root_view
(
self
):
def
test_delete_root_view
(
self
):
"""
"""
DELETE requests to
Root
APIView should not be allowed
DELETE requests to
ListCreate
APIView should not be allowed
"""
"""
request
=
factory
.
delete
(
'/'
)
request
=
factory
.
delete
(
'/'
)
response
=
self
.
view
(
request
)
.
render
()
response
=
self
.
view
(
request
)
.
render
()
...
@@ -82,7 +82,7 @@ class TestRootView(TestCase):
...
@@ -82,7 +82,7 @@ class TestRootView(TestCase):
def
test_options_root_view
(
self
):
def
test_options_root_view
(
self
):
"""
"""
OPTIONS requests to
Root
APIView should return metadata
OPTIONS requests to
ListCreate
APIView should return metadata
"""
"""
request
=
factory
.
options
(
'/'
)
request
=
factory
.
options
(
'/'
)
response
=
self
.
view
(
request
)
.
render
()
response
=
self
.
view
(
request
)
.
render
()
...
@@ -133,7 +133,7 @@ class TestInstanceView(TestCase):
...
@@ -133,7 +133,7 @@ class TestInstanceView(TestCase):
def
test_get_instance_view
(
self
):
def
test_get_instance_view
(
self
):
"""
"""
GET requests to
Instance
APIView should return a single object.
GET requests to
RetrieveUpdateDestroy
APIView should return a single object.
"""
"""
request
=
factory
.
get
(
'/1'
)
request
=
factory
.
get
(
'/1'
)
response
=
self
.
view
(
request
,
pk
=
1
)
.
render
()
response
=
self
.
view
(
request
,
pk
=
1
)
.
render
()
...
@@ -142,7 +142,7 @@ class TestInstanceView(TestCase):
...
@@ -142,7 +142,7 @@ class TestInstanceView(TestCase):
def
test_post_instance_view
(
self
):
def
test_post_instance_view
(
self
):
"""
"""
POST requests to
Instance
APIView should not be allowed
POST requests to
RetrieveUpdateDestroy
APIView should not be allowed
"""
"""
content
=
{
'text'
:
'foobar'
}
content
=
{
'text'
:
'foobar'
}
request
=
factory
.
post
(
'/'
,
json
.
dumps
(
content
),
request
=
factory
.
post
(
'/'
,
json
.
dumps
(
content
),
...
@@ -153,7 +153,7 @@ class TestInstanceView(TestCase):
...
@@ -153,7 +153,7 @@ class TestInstanceView(TestCase):
def
test_put_instance_view
(
self
):
def
test_put_instance_view
(
self
):
"""
"""
PUT requests to
Instance
APIView should update an object.
PUT requests to
RetrieveUpdateDestroy
APIView should update an object.
"""
"""
content
=
{
'text'
:
'foobar'
}
content
=
{
'text'
:
'foobar'
}
request
=
factory
.
put
(
'/1'
,
json
.
dumps
(
content
),
request
=
factory
.
put
(
'/1'
,
json
.
dumps
(
content
),
...
@@ -166,7 +166,7 @@ class TestInstanceView(TestCase):
...
@@ -166,7 +166,7 @@ class TestInstanceView(TestCase):
def
test_delete_instance_view
(
self
):
def
test_delete_instance_view
(
self
):
"""
"""
DELETE requests to
Instance
APIView should delete an object.
DELETE requests to
RetrieveUpdateDestroy
APIView should delete an object.
"""
"""
request
=
factory
.
delete
(
'/1'
)
request
=
factory
.
delete
(
'/1'
)
response
=
self
.
view
(
request
,
pk
=
1
)
.
render
()
response
=
self
.
view
(
request
,
pk
=
1
)
.
render
()
...
@@ -177,7 +177,7 @@ class TestInstanceView(TestCase):
...
@@ -177,7 +177,7 @@ class TestInstanceView(TestCase):
def
test_options_instance_view
(
self
):
def
test_options_instance_view
(
self
):
"""
"""
OPTIONS requests to
Instance
APIView should return metadata
OPTIONS requests to
RetrieveUpdateDestroy
APIView should return metadata
"""
"""
request
=
factory
.
options
(
'/'
)
request
=
factory
.
options
(
'/'
)
response
=
self
.
view
(
request
)
.
render
()
response
=
self
.
view
(
request
)
.
render
()
...
...
rest_framework/tests/pagination.py
View file @
c30e0795
...
@@ -7,7 +7,7 @@ from rest_framework.tests.models import BasicModel
...
@@ -7,7 +7,7 @@ from rest_framework.tests.models import BasicModel
factory
=
RequestFactory
()
factory
=
RequestFactory
()
class
RootView
(
generics
.
Root
APIView
):
class
RootView
(
generics
.
ListCreate
APIView
):
"""
"""
Example description for OPTIONS.
Example description for OPTIONS.
"""
"""
...
@@ -35,7 +35,7 @@ class IntegrationTestPagination(TestCase):
...
@@ -35,7 +35,7 @@ class IntegrationTestPagination(TestCase):
def
test_get_paginated_root_view
(
self
):
def
test_get_paginated_root_view
(
self
):
"""
"""
GET requests to paginated
Root
APIView should return paginated results.
GET requests to paginated
ListCreate
APIView should return paginated results.
"""
"""
request
=
factory
.
get
(
'/'
)
request
=
factory
.
get
(
'/'
)
response
=
self
.
view
(
request
)
.
render
()
response
=
self
.
view
(
request
)
.
render
()
...
...
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