relevant हो सकता है।Django रीस्ट फ्रेमवर्क: विचारों और विचारों के बीच अंतर?
विचारों और viewsets के बीच क्या अंतर है? और राउटर और urlpatterns के बारे में क्या?
relevant हो सकता है।Django रीस्ट फ्रेमवर्क: विचारों और विचारों के बीच अंतर?
विचारों और viewsets के बीच क्या अंतर है? और राउटर और urlpatterns के बारे में क्या?
ViewSets
और Routers
यदि आप मानक व्यवहार और मानक यूआरएल का लक्ष्य रख रहे हैं, तो अपने एपीआई को तेज करने के लिए सरल उपकरण हैं।
ViewSet
का उपयोग करके आपको ऑब्जेक्ट्स की सूची और एक ऑब्जेक्ट का विवरण प्राप्त करने के लिए अलग-अलग दृश्य बनाने की ज़रूरत नहीं है। व्यूसेट आपके लिए लगातार सूची और विवरण दोनों में संभाल लेगा।
Router
का उपयोग करते हुए कनेक्ट करेगा अपने ViewSet
में "Standarized" (यह किसी भी तरह से वैश्विक मानक नहीं है, बस कुछ संरचना है कि Django बाकी ढांचे के रचनाकारों द्वारा लागू किया गया था) URL की संरचना। इस तरह आपको हाथ से अपना urlpatterns बनाने की ज़रूरत नहीं है और आपको गारंटी है कि आपके सभी यूआरएल सुसंगत हैं (कम से कम उस परत पर Router
इसके लिए ज़िम्मेदार है)।
ऐसा लगता है कि कुछ विशाल एपीआई लागू नहीं करते हैं, जहां आपके पास ViewSets
और Routers
का उपयोग करके कई और कई urlpatterns और विचार होंगे, जिससे बड़ा अंतर आएगा।
बेहतर विवरण के लिए:
views.py:
from snippets.models import
from rest_framework import viewsets
from yourapp.serializers import ArticleSerializer
class ArticleViewSet(viewsets.ModelViewSet):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
urls.py: इस ViewSets और रूटर का उपयोग कर कोड है
from django.conf.urls import url, include
from yourapp import views
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'articles', views.ArticleViewSet)
urlpatterns = [
url(r'^', include(router.urls)),
]
और बराबर परिणाम का उपयोग कर सामान्य दृश्य और कोई राउटर:
विचार.py
from snippets.models import Article
from snippets.serializers import ArticleSerializer
from rest_framework import generics
class ArticleList(generics.ListCreateAPIView):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
class ArticleDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
urls.py
from django.conf.urls import url, include
from yourapp import views
urlpatterns = [
url(r'articles/^', views.ArticleList.as_view(), name="article-list"),
url(r'articles/(?P<pk>[0-9]+)/^', views.ArticleDetail.as_view(), name="article-detail"),
]
क्षमा करें, लेकिन मुझे इसे देखना जारी नहीं है। :('राउटर = राउटर। सिंपल राउटर(); राउटर.रेस्टर (आर'एक्ट्स', अकाउंट व्यूसेट) 'और' urlpatterns = [url (r '^ accounts /', accountView),] '? –
के बीच क्या अंतर है पहला व्यक्ति 2 यूआरएल पंजीकृत करेगा, एक सूची के लिए और एक विस्तार से, अद्यतन उत्तर – GwynBleidD
देखें बहुत स्पष्ट, धन्यवाद! :) –
आप पढ़ सकते हैं [viewsets के बारे में ट्यूटोरियल] है (http://www.django-rest-framework.org/tutorial/6-viewsets-and-routers/) ? यह विचारों + urlpatterns विचारों + राउटर से आगे बढ़ने का वर्णन करता है। क्या कोई विशिष्ट बात है जिसे आप समझ में नहीं आते? – Alasdair
हाय @ अलास्डेयर, हां, मैंने ट्यूटोरियल पढ़ा है और यह स्पष्ट रूप से बताता है कि विचारों के साथ कैसे काम करना है, यह विचारों और विचारों के बीच मतभेदों पर कई शब्द नहीं लग रहा है। एकमात्र पैराग्राफ जो प्रासंगिक प्रतीत होता है वह है "व्यूसेट क्लास लगभग कक्षाओं के समान ही हैं, सिवाय इसके कि वे पढ़ना, या अपडेट करना, और विधि हैंडलर जैसे नहीं हैं या नहीं, जैसे ऑपरेशन प्रदान करते हैं।" लेकिन यह पैराग्राफ भी स्पष्ट स्पष्ट नहीं लगता है (उदाहरण के लिए, आप प्राप्त करने या रखने के लिए क्यों पढ़ना और अपडेट करना पसंद करेंगे?)। –
'get' और 'put'' पर' read' और 'update' का लाभ यह है कि आपने उन्हें कॉल करने के लिए उपयोग की जाने वाली HTTP विधियों से एपीआई विधियों को अनसुलझा कर दिया है। फिर आप राउटर का उपयोग यूआरएल में विचारों को हुक करने के लिए कर सकते हैं, जो कोड सहेजता है और आपके एपीआई को और अधिक सुसंगत बना सकता है। – Alasdair