2014-08-31 18 views
9

Mi piacerebbe sapere come utilizzare django-rest-framework per fornire un risultato json impaginato da una richiesta get q=thisterm.Integrare il pagliaio del django con il django-rest-framework?

Capisco la fine del pagliaio di cose usando SearchQuerySet.filter(content=q) tuttavia come faccio a serializzare e creare una vista API con questo queryset. Non sono sicuro di quale view utilizzare, né la logica di base dietro ciò che avrei bisogno di fare sul resto.

Qualsiasi aiuto sarebbe apprezzato.

Grazie

risposta

10

Dopo un sacco di tentativi ed errori, ho trovato la combinazione giusta! Ecco un inizio.

Definire un serializzatore: 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() 

Creare la vista: 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 

Si prega di notare che si potrebbe desiderare di pulire l'ingresso ed eseguire altri controlli di sicurezza .

percorso è: urls.py

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

questo è stato estremamente utile. Grazie. Puoi consigliarmi come aggiungere il conteggio dei risultati al JSON in uscita? –

+0

Dai un'occhiata a Haystack per Django REST Framework: https://github.com/inonit/drf-haystack – Daviddd

+0

Ottieni i risultati richiesti ottenendo il SearchQuerySet di HayStack? È lo stesso meccanismo seguito quando si utilizza una vista HayStack (In caso di moduli di ricerca) o sono possibili differenze di prestazioni? –

Problemi correlati