2015-09-21 41 views
5

Tôi chỉ mới bắt đầu làm việc với django và DRF, và xảy ra sự cố, có vẻ như phản hồi bộ nhớ cache DRF. Ý tôi là - tôi có thể thay đổi đối tượng, tạo mới hoặc xóa đối tượng - và DRF giữ phản hồi, không có gì thay đổi. Ví dụ, tôi tạo một đối tượng, nhưng modelViewSet vẫn trả về dữ liệu mà đối tượng này không trình bày. Nhưng nếu tôi trực tiếp yêu cầu nó đối tượng - nó cho thấy rằng nó được tạo ra. Và như vậy với bất kỳ hành động khác. Tôi không thể tìm thấy chủ đề về bộ nhớ đệm trong DRF, và trông giống như tôi đã không có bất kỳ django chaching middlewares, vì vậy tôi không có ý tưởng những gì đang xảy ra. Chỉ có một thứ giúp - khởi động lại máy chủ (Tôi đang sử dụng máy chủ mặc định dev).Làm thế nào để vô hiệu hóa Django REST Framework caching?

Một điều nữa - tất cả dữ liệu đều ổn khi được hiển thị theo chế độ xem django chứ không phải chế độ xem DRF.

Đây là một trong những bộ nối tiếp/modelViewSets mà tôi đang sử dụng. Nó đơn giản như nó có thể. Và cũng - tôi không sử dụng phụ trợ bộ đệm django. Ít nhất - tôi không có bất kỳ cài đặt nào của tôi.

class WorkOperationSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = WorkOperation 


class WorkOperationAPIView(viewsets.ModelViewSet): 
    serializer_class = WorkOperationSerializer 
    queryset = WorkOperation.objects.all() 

    def get_queryset(self): 
     return self.queryset 
+0

Không có nội dung nào được tích hợp trong DRF, bạn có chắc chắn rằng bộ nhớ đệm xuất hiện ở phía DRF không? Có lẽ có cái gì khác trong django mà thực hiện bộ nhớ cache này hoặc nó trong trình duyệt của bạn? – GwynBleidD

+0

Vâng, có vẻ đó không phải là một trình duyệt - những người khác cũng thấy kết quả tương tự. Và như tôi đã nói - Tôi không có bất kỳ bộ đệm đệm nào. Django sử dụng middleware cho bộ nhớ đệm, phải không? – GeraldIstar

+0

Bạn có thể đăng xem và serializer bị ảnh hưởng bởi bộ nhớ cache đó, cũng là những gì backend bộ nhớ cache bạn đang sử dụng trong dự án django? – GwynBleidD

Trả lời

4

Bạn có thể đọc here về bộ đệm truy vấn django. Lời khuyên tốt nhất có thể là: chạy lại phương thức .all() để nhận kết quả mới. Chỉ object.property có thể cung cấp cho bạn kết quả được lưu trong bộ nhớ cache.

+0

Ah, xấu hổ với tôi. Cảm ơn bạn, tôi chỉ cần sử dụng 'WorkOperation.objects.all()' insted of return 'self.queryset'. Tôi không chú ý. – GeraldIstar

Các vấn đề liên quan