2014-08-31 19 views
9

Ich würde gerne wissen, wie ich Django-Rest-Framework verwenden könnte, um ein paginiertes JSON-Ergebnis von einer Get-Anforderung q=thisterm bereitzustellen.Integrierender Django-Heuhaufen mit Django-Ruhe-Rahmen?

Ich verstehe die Heuhaufen Ende der Dinge mit SearchQuerySet.filter(content=q) aber wie serialisieren und erstellen Sie eine API-Ansicht mit diesem Abfrage-Set. Ich bin mir nicht sicher, welches Viewset ich verwenden soll, und auch nicht die grundlegende Logik dahinter, was ich am Restende tun müsste.

Jede Hilfe wäre willkommen.

Dank

Antwort

10

Nach viel Versuch und Irrtum, ich habe die richtige Kombination gefunden! Hier ist ein Anfang.

definieren einen Serializer: serializers.py

class DotaSearchSerializer(serializers.Serializer): 
    text = serializers.CharField() 
    name = serializers.CharField() 
    quality = serializers.CharField() 
    type = serializers.CharField() 
    rarity = serializers.CharField() 
    hero = serializers.CharField() 
    image = serializers.CharField() 
    desc = serializers.CharField() 

Erstellen Sie die Ansicht: views.py

class DotaSearchViewSet(mixins.ListModelMixin, viewsets.GenericViewSet): 

    serializer_class = DotaSearchSerializer 
    permission_classes = (IsAuthenticated,) 
    authentication_classes = (SessionAuthentication, BasicAuthentication) 

    def get_queryset(self, *args, **kwargs): 
     request = self.request 
     queryset = EmptySearchQuerySet() 

     if request.GET.get('q') is not None: 
      query = request.GET.get('q') 
      queryset = SearchQuerySet().filter(content=query) 

     return queryset 

Bitte beachten Sie die Eingabe reinigen möchten und andere Sicherheitsprüfungen durchführen .

Strecke es: urls.py

router.register(r'search', api_views.DotaSearchViewSet, base_name='search') 
+0

das war sehr hilfreich. Vielen Dank. Können Sie mir raten, wie Sie die Ergebnisanzahl zum ausgegebenen JSON hinzufügen? –

+0

Werfen Sie einen Blick auf Haystack für Django REST-Framework: https://github.com/inonit/drf-haystack – Daviddd

+0

Sie erhalten die erforderlichen Ergebnisse von HayStack SearchQuerySet bekommen? Ist der gleiche Mechanismus bei der Verwendung einer HayStack View (im Falle von Suchformularen) oder sind Leistungsunterschiede möglich? –