2016-05-08 14 views
0

Ich bin neu mit Django (sowie Django Rest Framework) und ich bin ein wenig verloren. Ich befolge das Tutorial und habe meinen REST-API-Server ausgeführt. Ich kann Daten posten, sie aus meiner Datenbank holen, alles funktioniert gut, aber ich habe Probleme zu verstehen, wie man benutzerdefinierte Funktionen macht. Ich habe eindeutig einige Begriffe vermisst.Vektorieller Vergleich mit Django REST Framework

Ich möchte POST einen Vektor ([0, 1, 1, 0, 1, 0] zum Beispiel) als JSON und ich möchte, dass mein Server alle Vektoren aus meiner Datenbank, vergleichen Sie sie und dann zurück mir eine Ähnlichkeitsnote.

Ich weiß nicht einmal, wie man eine einfache Zahl postet, multipliziert es mit 2 und gebe dann das Ergebnis als JSON zurück. Hat jemand dafür ein gutes Tutorial oder könnte mir erklären, wie ich so eine einfache Sache erreichen kann? Ich werde dann selbst meinen Vektorvergleich herausfinden :) Danke!

Antwort

0

Ich schreibe dies, ohne den Code tatsächlich zu testen, also könnte es ein paar Tippfehler oder Probleme haben, aber es sollte Ihnen helfen, zu beginnen. Es zeigt, wie eine benutzerdefinierte API erstellt wird. In diesem Fall nehme ich einen Vektor und jedes Element durch zwei multipliziert und Rückkehr:

from rest_framework.views import APIView 
from rest_framework.parsers import JSONParser 

class TestSerializer(serializers.Serializer): 
    vector = serializers.ListField(
     child=serializers.IntegerField(min_value=0, max_value=100) 
    ) 


class TestViewSet(APIView): 

    #permission_classes =() 

    def post(self, request, format=None): 

     data = JSONParser().parse(request) 
     serializer = TestSerializer(data=data) 

     if serializer.is_valid(): 
      vector = serializer.data.get('vector') 

      new_vector = [] 
      for item in vector: 
       new_vector.append(item*2) 

      new_data = { 
       'vector': new_vector 
      } 

      return Response(new_data, status=status.HTTP_201_CREATED) 

     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

Hoffen, dass es Sie auf dem richtigen Weg bringt.

+0

Danke, ich habe ein paar Änderungen vorgenommen, aber es hat mir geholfen, einige Punkte zu verstehen, die mir fehlten :) – magohamoth

Verwandte Themen