Django кеширует результаты запросов API - PullRequest
0 голосов
/ 01 августа 2020

При разработке приложения локально с использованием Django я использую runserver и работаю локально.

Проблема, с которой я сталкиваюсь, заключается в том, что большую часть времени запросы GET к API кэшируются, и поэтому, когда я выполняю, например, исправление или обновление, результаты не отражаются.

Пример:

GET django.app/api/v1/cars
Returns: {id: 1, is_active: True}



PATCH {'is_active': False} django.app/api/v1/cars/1/
Returns: {id: 1, is_active: False}


GET django.app/api/v1/cars
Returns(cached): {id: 1, is_active: True}

Есть ли для этого настройки? или это может быть проблема браузера? У меня была аналогичная проблема на сервере nginx, и я отключил кеширование со стороны сервера, но поскольку локально я использую сервер выполнения из Django, я не знаю, есть ли такая настройка.

Обратите внимание, что я использую из коробки django.

Изменить: добавление кода в соответствии с просьбой в комментариях:

models.py
    class Car(models.Model):
        class Meta:
            db_table = u"tbl_car"
        def __str__(self):
            return self.name
        id = models.CharField(max_length=25, primary_key=True, db_column='id')
        is_active = models.BooleanField(default=True, db_index=True)


api/v1/views.py

class CarViewSet(viewsets.ModelViewSet):
    queryset = models.Car.objects.all()
    serializer_class = serializers.CarSerializer
    permission_classes = [custom_permissions.IsSuperUserOrUserReadOnly]
    filter_backends = [DjangoFilterBackend]
    filterset_fields = ['is_active']

api / v1 / serializes.py

class CarSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Car
        fields = '__all__'

api / v1 / urls.py

from django.urls import include, path
from rest_framework.routers import DefaultRouter
from . import views

router = DefaultRouter()
router.register('cars', views.CarViewSet)
...