2016-12-29 12 views
6

APIView कक्षा और विचारों कक्षाओं के बीच क्या अंतर है? मैं Django REST-framework आधिकारिक दस्तावेज का पालन कर रहा हूं। मुझे लगता है कि इसमें उदाहरणों की कमी है।APIView क्लास और व्यूसेट क्लास के बीच अंतर?

क्या आप एक उपयुक्त उदाहरण के साथ उपरोक्त अंतर को समझा सकते हैं।

उत्तर

7

APIView सबसे बुनियादी वर्ग है जिसे आप आमतौर पर अपने आरईएसटी व्यू को परिभाषित करते समय ओवरराइड करते हैं। आप आमतौर पर अपनी विधियों को परिभाषित करते हैं जैसे कि प्राप्त करें, रखें, हटाएं और अन्य जांचें (http://www.cdrf.co/3.5/rest_framework.views/APIView.html)। APIView के साथ आप अपने दृश्य को परिभाषित करने और तुम इतनी तरह अपने यूआरएल में जोड़ें:

#in views.py 
class MyAPIView(APIView): 
    ... #here you put your logic check methods you can use 
#in urls.py 
url(r'^posts$', MyAPIView.as_view()), #List of all the posts 

क्योंकि/पोस्ट/4 हो रही, हटाने जैसे कुछ बातें/पोस्ट/4,, सभी पोस्ट हो रही अद्यतन करने और नए बनाने पोस्ट इतना आम था डीआरएफ Viewsets प्रदान करता है।

लेकिन इससे पहले कि आप विचारों को जानते हों, मैं आपको बताता हूं कि जेनेरिक क्लासेस भी हैं जो वे बहुत अच्छी चीजें करते हैं, लेकिन आपको पूर्ण एपीआई एंड पॉइंट प्रदान करना होगा जैसे मैंने अपने माईपिव्यू व्यू के साथ किया था (फिर से अधिक जानकारी जांच के लिए http://www.cdrf.co/ या http://www.django-rest-framework.org/)। तो आपको अपने यूआरएल पथ को परिभाषित करना होगा।

लेकिन ViewSets साथ आप viewset है कि वास्तव में सब से ऊपर वर्णित संचालन विलीन हो जाती है बना सकते हैं और आप भी आप आमतौर पर एक रूटर है कि आप के लिए पथ बनाता का उपयोग url पथ परिभाषित करने की जरूरत नहीं है की तरह:

#views.py 
class PostViewSet(ViewSet): #here you subclass Viwset check methods you can   override, you have also ModelViewSet,... 
# urls.py 
router = routers.DefaultRouter() 
router.register(r'post', PostViewSet, base_name='Post') 
संबंधित मुद्दे