Về cơ bản, tôi đang cố tìm cách tốt để đính kèm nhiều chế độ xem hơn vào Bộ định tuyến mà không cần tạo Bộ định tuyến tùy chỉnh. Cách tốt nhất để thực hiện việc này là gì?Thêm nhiều chế độ xem vào Bộ định tuyến hoặc chế độ xem (Django-Rest-Framework)
Dưới đây là thứ gì đó tương đương với những gì tôi đang cố gắng hoàn thành. Tên biến đã được thay đổi và phương pháp ví dụ tôi muốn giới thiệu cực kỳ đơn giản vì lợi ích của câu hỏi này.
Router:
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()
Một ví dụ về một loại phương pháp tôi cần phải bao gồm. (Có nhiều trong số này):
def get_locations(self, request):
""" Returns a list of location objects somehow related to MyObject """
locations = calculate_something()
return Response(locations)
Kết quả cuối cùng là URL sau sẽ hoạt động chính xác và được triển khai 'sạch'.
GET example.com/myobjects/123/locations
tôi đang cố gắng tải tệp lên một phương thức tùy chỉnh. bạn có biết làm thế nào tôi có thể đạt được điều đó? – psychok7
Có '@ action' không được chấp nhận - Liên kết đề xuất các phương thức làm đối số cho trang trí' @ detail_route'. – rtindru