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')
das war sehr hilfreich. Vielen Dank. Können Sie mir raten, wie Sie die Ergebnisanzahl zum ausgegebenen JSON hinzufügen? –
Werfen Sie einen Blick auf Haystack für Django REST-Framework: https://github.com/inonit/drf-haystack – Daviddd
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? –