Tập 19: Django REST Framework thêm endpoint tùy chỉnh bằng @action — khỏi tạo ViewSet mới trong 5 phút. Một ModelViewSet chỉ có sẵn năm thao tác CRUD, nên khi cần thêm nút xuất bản hay danh sách bài nổi bật, nhiều người viết thêm APIView riêng rồi đăng ký route bằng tay — permission và serializer phải viết lại, logic của cùng một tài nguyên bị xé ra hai nơi. Giải pháp là gắn decorator @action lên method ngay trong ViewSet: detail=True cho thao tác trên một object như publish, detail=False cho thao tác trên danh sách như featured, framework tự sinh route và giữ nguyên permission, serializer, queryset của ViewSet. Hai chi tiết hay bị quên: action chỉ đọc dùng method get, action đổi dữ liệu dùng post, patch hoặc delete cho đúng ngữ nghĩa, và truyền url_path vào decorator khi tên method không hợp làm đường dẫn.

Đọc bài viết đầy đủ kèm code mẫu đã kiểm chứng chạy được tại: Django REST Framework: thêm endpoint tùy chỉnh bằng @action, khỏi tạo ViewSet mới trong 5 phút

English version