Początkowo skupie się od razu nad konfiguracją już przygotowanej struktury do tworzenia aplikacji MVC i tak jak już otworzyłem swoje Ninja IDE to przystępie od tworzenia nowego moduły o nazwie: serializers.py, . Poniżej jest pokazany kod tego pliku.
1: from django.contrib.auth.models import User, Group
2: from rest_framework import serializers
3: """
4: This class define 3 fields
5: """
6: class UserSerializer(serializers.HyperlinkedModelSerializer):
7: class Meta:
8: model = User
9: fields = ('url', 'username', 'email', 'groups')
10: """
11: Bext class generate anotger fields ;)
12: """
13: class GroupSerializer(serializers.HyperlinkedModelSerializer):
14: class Meta:
15: model = Group
16: fields = ('url', 'name')
Teraz skonfiguruje środowisko by korzystał z frameworka RESTowego, czyli muszę edytować plik settings.py. Na początku do INSTALLED_APPS dodaje:
1: 'rest_framework',
I jeszcze pod koniec lub w dowolnym miejscu pliku, definiuje odwołanie do odwołanie do resta:
1: REST_FRAMEWORK = {
2: 'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAdminUser',),
3: 'PAGINATE_BY': 10
4: }
Teraz przechodzę do pierwszego testu. Posłużę się poleceniem
1: python ./manage.py runserver
Okazało się, że zapomniałe skonfigurowac pliku urls.py, który prawidłowo powinien wyglądac tak:
1: from django.conf.urls import url, include
2: from django.contrib.auth.models import User
3: from rest_framework import routers, serializers, viewsets
4: # Serializers define the API representation.
5: class UserSerializer(serializers.HyperlinkedModelSerializer):
6: class Meta:
7: model = User
8: fields = ('url', 'username', 'email', 'is_staff')
9: # ViewSets define the view behavior.
10: class UserViewSet(viewsets.ModelViewSet):
11: queryset = User.objects.all()
12: serializer_class = UserSerializer
13: # Routers provide an easy way of automatically determining the URL conf.
14: router = routers.DefaultRouter()
15: router.register(r'users', UserViewSet)
16: # Wire up our API using automatic URL routing.
17: # Additionally, we include login URLs for the browseable API.
18: urlpatterns = [
19: url(r'^', include(router.urls)),
20: url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
21: ]
Teraz jeszcze raz uruchamiam test, czyli uruchomienie serwera pythona na porcie 8000 i zależnie od tego jak skonfigurujemy serwer bazy danych to powinniśmy dostać podobny wynik do tego:
Brakuje mi jeszcze widoku, który powinien wyglądac tak:
1: from django.contrib.auth.models import User, Group
2: from rest_framework import viewsets
3: from tutorial.quickstart.serializers import UserSerializer, GroupSerializer
4: class UserViewSet(viewsets.ModelViewSet):
5: """
6: API endpoint that allows users to be viewed or edited.
7: """
8: queryset = User.objects.all()
9: serializer_class = UserSerializer
10: class GroupViewSet(viewsets.ModelViewSet):
11: """
12: API endpoint that allows groups to be viewed or edited.
13: """
14: queryset = Group.objects.all()
15: serializer_class = GroupSerializer
Teraz jest już wszystko i jestem gotowy do rozpoczęcia przygody z RESTem na poważnie, czyli od razu pójdę na głęboką wodę i rozpocznę z moimi kumplami/kumpelą od razu aplikacje RESTową i ps. zacznę pracować na Linuxie, bo ja nie lubię troszkę Windowsa. Następny post będzie o tym jak zagłębić się w podstawy języka C i poznać go troszkę od środka, a następny post tego o Django + REST pojawi się tylko jak wymagania rozbite będą na zadania.
Brak komentarzy:
Prześlij komentarz