This commit is contained in:
Tom Christie 2013-06-05 13:45:43 +01:00
commit 181e4fddd0
2 changed files with 9 additions and 6 deletions

View File

@ -139,6 +139,7 @@ The following people have helped make REST framework great.
* Pascal Borreli - [pborreli] * Pascal Borreli - [pborreli]
* Alex Burgel - [aburgel] * Alex Burgel - [aburgel]
* David Medina - [copitux] * David Medina - [copitux]
* Areski Belaid - [areski]
Many thanks to everyone who's contributed to the project. Many thanks to everyone who's contributed to the project.
@ -314,3 +315,4 @@ You can also contact [@_tomchristie][twitter] directly on twitter.
[pborreli]: https://github.com/pborreli [pborreli]: https://github.com/pborreli
[aburgel]: https://github.com/aburgel [aburgel]: https://github.com/aburgel
[copitux]: https://github.com/copitux [copitux]: https://github.com/copitux
[areski]: https://github.com/areski

View File

@ -10,7 +10,9 @@ A `ViewSet` class is only bound to a set of method handlers at the last moment,
Let's take our current set of views, and refactor them into view sets. Let's take our current set of views, and refactor them into view sets.
First of all let's refactor our `UserListView` and `UserDetailView` views into a single `UserViewSet`. We can remove the two views, and replace then with a single class: First of all let's refactor our `UserList` and `UserDetail` views into a single `UserViewSet`. We can remove the two views, and replace then with a single class:
from rest_framework import viewsets
class UserViewSet(viewsets.ReadOnlyModelViewSet): class UserViewSet(viewsets.ReadOnlyModelViewSet):
""" """
@ -23,15 +25,14 @@ Here we've used `ReadOnlyModelViewSet` class to automatically provide the defaul
Next we're going to replace the `SnippetList`, `SnippetDetail` and `SnippetHighlight` view classes. We can remove the three views, and again replace them with a single class. Next we're going to replace the `SnippetList`, `SnippetDetail` and `SnippetHighlight` view classes. We can remove the three views, and again replace them with a single class.
from rest_framework import viewsets
from rest_framework.decorators import link from rest_framework.decorators import link
class SnippetViewSet(viewsets.ModelViewSet): class SnippetViewSet(viewsets.ModelViewSet):
""" """
This viewset automatically provides `list`, `create`, `retrieve`, This viewset automatically provides `list`, `create`, `retrieve`,
`update` and `destroy` actions. `update` and `destroy` actions.
Additionally we also provide an extra `highlight` action. Additionally we also provide an extra `highlight` action.
""" """
queryset = Snippet.objects.all() queryset = Snippet.objects.all()
serializer_class = SnippetSerializer serializer_class = SnippetSerializer
@ -107,7 +108,7 @@ Here's our re-wired `urls.py` file.
router = DefaultRouter() router = DefaultRouter()
router.register(r'snippets', views.SnippetViewSet) router.register(r'snippets', views.SnippetViewSet)
router.register(r'users', views.UserViewSet) router.register(r'users', views.UserViewSet)
# The API URLs are now determined automatically by the router. # The API URLs are now determined automatically by the router.
# Additionally, we include the login URLs for the browseable API. # Additionally, we include the login URLs for the browseable API.
urlpatterns = patterns('', urlpatterns = patterns('',
@ -131,7 +132,7 @@ With an incredibly small amount of code, we've now got a complete pastebin Web A
We've walked through each step of the design process, and seen how if we need to customize anything we can gradually work our way down to simply using regular Django views. We've walked through each step of the design process, and seen how if we need to customize anything we can gradually work our way down to simply using regular Django views.
You can review the final [tutorial code][repo] on GitHub, or try out a live example in [the sandbox][sandbox]. You can review the final [tutorial code][repo] on GitHub, or try out a live example in [the sandbox][sandbox].
## Onwards and upwards ## Onwards and upwards