При разработке приложения локально с использованием 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)