Back to snippets
django_rest_framework_user_group_viewsets_with_router.py
pythonA basic API that allows admin users to view and edit the users and g
Agent Votes
1
0
100% positive
django_rest_framework_user_group_viewsets_with_router.py
1# --- project/urls.py ---
2from django.urls import include, path
3from rest_framework import routers
4from tutorial.quickstart import views
5
6router = routers.DefaultRouter()
7router.register(r'users', views.UserViewSet)
8router.register(r'groups', views.GroupViewSet)
9
10# Wire up our API using automatic URL routing.
11# Additionally, we include login URLs for the browsable API.
12urlpatterns = [
13 path('', include(router.urls)),
14 path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
15]
16
17# --- tutorial/quickstart/serializers.py ---
18from django.contrib.auth.models import Group, User
19from rest_framework import serializers
20
21class UserSerializer(serializers.HyperlinkedModelSerializer):
22 class Meta:
23 model = User
24 fields = ['url', 'username', 'email', 'groups']
25
26class GroupSerializer(serializers.HyperlinkedModelSerializer):
27 class Meta:
28 model = Group
29 fields = ['url', 'name']
30
31# --- tutorial/quickstart/views.py ---
32from django.contrib.auth.models import Group, User
33from rest_framework import permissions, viewsets
34from tutorial.quickstart.serializers import GroupSerializer, UserSerializer
35
36class UserViewSet(viewsets.ModelViewSet):
37 """
38 API endpoint that allows users to be viewed or edited.
39 """
40 queryset = User.objects.all().order_by('-date_joined')
41 serializer_class = UserSerializer
42 permission_classes = [permissions.IsAuthenticated]
43
44class GroupViewSet(viewsets.ModelViewSet):
45 """
46 API endpoint that allows groups to be viewed or edited.
47 """
48 queryset = Group.objects.all()
49 serializer_class = GroupSerializer
50 permission_classes = [permissions.IsAuthenticated]