पर अधिक विचार जोड़ना अनिवार्य रूप से, मैं कस्टम राउटर के बिना राउटर को और अधिक दृश्य संलग्न करने का एक अच्छा तरीका खोजने का प्रयास कर रहा हूं। इसे पूरा करने का एक अच्छा तरीका क्या है?राउटर या व्यूसेट (Django-Rest-Framework)
यहां कुछ ऐसा है जो मैं पूरा करने की कोशिश कर रहा हूं। परिवर्तनीय नाम बदल दिए गए हैं और मैं जिस उदाहरण विधि को पेश करना चाहता हूं वह इस प्रश्न के लिए बेहद सरल है।
रूटर:
router = routers.SimpleRouter(trailing_slash=False)
router.register(r'myobjects', MyObjectViewSet, base_name='myobjects')
urlpatterns = router.urls
ViewSet एक और तरीका प्रकार मैं शामिल करने की ज़रूरत की
class MyObjectsViewSet(viewsets.ViewSet):
""" Provides API Methods to manage MyObjects. """
def list(self, request):
""" Returns a list of MyObjects. """
data = get_list_of_myobjects()
return Response(data)
def retrieve(self, request, pk):
""" Returns a single MyObject. """
data = fetch_my_object(pk)
return Response(data)
def destroy(self, request, pk):
""" Deletes a single MyObject. """
fetch_my_object_and_delete(pk)
return Response()
एक उदाहरण। (इनमें से कई हैं):
def get_locations(self, request):
""" Returns a list of location objects somehow related to MyObject """
locations = calculate_something()
return Response(locations)
अंत परिणाम यह है कि निम्नलिखित यूआरएल सही तरीके से काम करेगा और इसे 'साफ' लागू किया जाएगा।
GET example.com/myobjects/123/locations
मैं एक कस्टम विधि में एक फ़ाइल अपलोड करने की कोशिश कर रहा हूँ। क्या आप जानते हैं कि मैं इसे कैसे प्राप्त कर सकता हूं? – psychok7
'@ action' बहिष्कृत है - लिंक' @ detail_route' सजावटकर्ता के तर्क के रूप में विधियों को सुझाता है। – rtindru