2016-04-14 18 views
0

Her son noktanın GET veya POST yöntemiyle çağrılabildiği bir RPC stili API oluşturmak için DRF kullanıyorum. Maalesef POST request.data verileri sağlar ve request.query_params yılında GETDjango REST Framework'de request.data ve request.query_params öğesinin birleştirilmesi

class UpdateUser(APIView): 
    permission_classes = (permissions.IsAuthenticated,) 

    def post(self, request, *args, **kwargs): 
     return self.get(request, *args, **kwargs) 

    def get(self, request, format=None): 
     # Do stuff here with request.data 

: Şimdiye kadar güzel kombine yöntemler var. Bunları request.data ya da request.params gibi özel bir şeyle birleştirmenin bir yolu var mı? Parsers GET isteklerine çağrılmadıkları için çalışmıyor gibi görünüyor.

+0

'http: //example.com/test/ PARAM_NAME = 1' Sen' request.GET.get ('PARAM_NAME') 'kullanarak sorgu menü noktası değerini alabilir ve de dönecektir' 1' –

+0

O var Tabii ki 'request.data' ve' request'query_params' '' '' '' '' 'fonksiyonunda kullanmak mümkündür fakat buna ek olarak, eklenen kazanın önüne geçmekten kaçınmak istiyorum. – jorilallo

cevap

3

@jorilallo 'nun get işlevindeki request.data kullanımıyla ilgili yorumlarına katılıyorum. İşte

class UpdateUser(APIView): 
    permission_classes = (permissions.IsAuthenticated,) 

    def post(self, request, *args, **kwargs): 
     # POST have request.data 
     return self.process_request(request, request.data) 

    def get(self, request, format=None): 
     # GET have request.query_params 
     return self.process_request(request, request.query_params) 

    def process_request(self, request, data): 
     # Do stuff here with data 
     # return a response 

, process_request fonksiyon data hem post ve get yöntemleri denir ve ilgili olduğu: Alternatif

, ne yapabilirdi argümanlar olarak request.data veya request.query_params ya sahip olabilir görünümünde başka bir fonksiyon oluşturmaktır argümanlar olarak geçti.

+0

Bence bu benim bağlamımda çok anlam ifade ediyor ve oldukça temiz. Teşekkürler, ben bununla gideceğim! – jorilallo

İlgili konular