2016-09-24 43 views
1

我想用Python和Django Rest框架創建一個web api。到目前爲止,我已閱讀的教程包含模型和序列化程序來處理和存儲數據。我想知道是否有更簡單的方法來處理後綴爲我的api的數據,然後返回JSON響應而不存儲任何數據。Python Django Rest Post API不存儲

目前,這是我的urls.py

from django.conf.urls import url 
from rest_framework import routers 
from core.views import StudentViewSet, UniversityViewSet, TestViewSet 

router = routers.DefaultRouter() 
router.register(r'students', StudentViewSet) 
router.register(r'universities', UniversityViewSet) 
router.register(r'other', TestViewSet,"other") 

urlpatterns = router.urls 

,這是我的views.py

from rest_framework import viewsets 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 
from .models import University, Student 
from .serializers import UniversitySerializer, StudentSerializer 

import json 
from django.http import HttpResponse 

class StudentViewSet(viewsets.ModelViewSet): 
    queryset = Student.objects.all() 
    serializer_class = StudentSerializer 

class UniversityViewSet(viewsets.ModelViewSet): 
    queryset = University.objects.all() 
    serializer_class = UniversitySerializer 

class TestViewSet(viewsets.ModelViewSet):  
    def retrieve(self, request, *args, **kwargs): 
     return Response({'something': 'my custom JSON'}) 

前兩個關於學生和高校份以下的Django的安裝教程後創建。我不需要它提供的用於創建,編輯和刪除對象的功能。我試着用我創建的TestViewSet玩弄。

我目前卡住試圖接收JSON數據,獲取張貼到以「other」結尾的URL並在響應某個自定義JSON之前處理該JSON。

編輯

這兩個環節是有幫助的,除了提供的解決方案:

Django REST framework: non-model serializer

http://jsatt.com/blog/abusing-django-rest-framework-part-1-non-model-endpoints/

回答

2

您可以使用自己的通用APIView類(沒有基於HTTP請求類型自己處理請求。例如:

class RetrieveMessages(APIView): 
    def post(self, request, *args, **kwargs): 
     posted_data = self.request.data 
     city = posted_data['city'] 
     return_data = [ 
      {"echo": city} 
     ] 
     return Response(status=200, data=return_data) 

    def get.... 
+1

感謝您的迴應 - APIView證明是適合此任務! – wayway