2016-09-24 41 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