Skip to content

Commit 4470670

Browse files
Add viewsets in demo project
1 parent a4267e7 commit 4470670

File tree

6 files changed

+48
-4
lines changed

6 files changed

+48
-4
lines changed

demo/project/accounts/urls.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
1-
from django.conf.urls import url
1+
from django.conf.urls import url, include
2+
from rest_framework import routers
23
from project.accounts import views
34

45

6+
router = routers.DefaultRouter()
7+
router.register(
8+
r'user_viewset',
9+
views.UserModelViewSet,
10+
)
11+
12+
513
urlpatterns = [
614
url(r'^test/$', views.TestView.as_view(), name="test-view"),
715

816
url(r'^login/$', views.LoginView.as_view(), name="login"),
917
url(r'^register/$', views.UserRegistrationView.as_view(), name="register"),
18+
url(r'^register/$', views.UserRegistrationView.as_view(), name="register"),
1019
url(r'^reset-password/$', view=views.PasswordResetView.as_view(), name="reset-password"),
1120
url(r'^reset-password/confirm/$', views.PasswordResetConfirmView.as_view(), name="reset-password-confirm"),
1221

1322
url(r'^user/profile/$', views.UserProfileView.as_view(), name="profile"),
1423

24+
url(r'^viewset_test/', include(router.urls), name="user_viewset"),
1525
]

demo/project/accounts/views.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from rest_framework.permissions import AllowAny
77
from rest_framework.response import Response
88
from rest_framework.views import APIView
9+
from rest_framework.viewsets import ModelViewSet
910
from project.accounts.models import User
1011
from project.accounts.serializers import (
1112
UserRegistrationSerializer, UserProfileSerializer, ResetPasswordSerializer
@@ -81,3 +82,8 @@ def post(self, request, *args, **kwargs):
8182
if not serializer.is_valid():
8283
return Response({'errors': serializer.errors}, status=status.HTTP_400_BAD_REQUEST)
8384
return Response({"msg": "Password updated successfully."}, status=status.HTTP_200_OK)
85+
86+
87+
class UserModelViewSet(ModelViewSet):
88+
queryset = User.objects.all()
89+
serializer_class = UserProfileSerializer

demo/project/organisations/urls.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
1-
from django.conf.urls import url
1+
from django.conf.urls import url, include
2+
from rest_framework import routers
23
from project.organisations import views
34

45

6+
router = routers.DefaultRouter()
7+
router.register(
8+
r'organisation_viewset',
9+
views.OrganisationViewSet,
10+
)
11+
12+
513
urlpatterns = [
614

715
url(r'^create/$', view=views.CreateOrganisationView.as_view(), name="create"),
816
url(r'^(?P<slug>[\w-]+)/$', view=views.RetrieveOrganisationView.as_view(), name="organisation"),
917
url(r'^(?P<slug>[\w-]+)/members/$', view=views.OrganisationMembersView.as_view(), name="members"),
10-
url(r'^(?P<slug>[\w-]+)/leave/$', view=views.LeaveOrganisationView.as_view(), name="leave")
18+
url(r'^(?P<slug>[\w-]+)/leave/$', view=views.LeaveOrganisationView.as_view(), name="leave"),
1119

20+
url(r'^', include(router.urls), name="organisation_viewset"),
1221
]

demo/project/organisations/views.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
from rest_framework import generics, status
22
from rest_framework.response import Response
3+
from rest_framework.viewsets import ModelViewSet
34
from project.organisations.models import Organisation, Membership
45
from project.organisations.serializers import (
5-
CreateOrganisationSerializer, OrganisationMembersSerializer, RetrieveOrganisationSerializer
6+
CreateOrganisationSerializer, OrganisationMembersSerializer,
7+
RetrieveOrganisationSerializer, OrganisationDetailSerializer
68
)
79

810

@@ -34,3 +36,8 @@ def delete(self, request, *args, **kwargs):
3436
instance = self.get_object()
3537
self.perform_destroy(instance)
3638
return Response(status=status.HTTP_204_NO_CONTENT)
39+
40+
41+
class OrganisationViewSet(ModelViewSet):
42+
queryset = Organisation.objects.all()
43+
serializer_class = OrganisationDetailSerializer

demo/project/settings.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,14 @@
101101
)
102102
}
103103

104+
REST_FRAMEWORK_DOCS = {
105+
'HIDE_DOCS': False,
106+
'MODULE_ROUTERS': {
107+
'project.accounts.urls': 'router',
108+
},
109+
'DEFAULT_MODULE_ROUTER': 'router',
110+
}
111+
104112
# Internationalization
105113
# https://docs.djangoproject.com/en/1.8/topics/i18n/
106114

demo/project/urls.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@
1616
from django.conf.urls import include, url
1717
from django.contrib import admin
1818

19+
1920
urlpatterns = [
2021
url(r'^admin/', include(admin.site.urls)),
2122
url(r'^docs/', include('rest_framework_docs.urls')),
2223

2324
# API
2425
url(r'^accounts/', view=include('project.accounts.urls', namespace='accounts')),
26+
27+
2528
url(r'^organisations/', view=include('project.organisations.urls', namespace='organisations')),
29+
2630
]

0 commit comments

Comments
 (0)