Как использовать Last-Modified заголовок с Django Rest Framework ViewSet? - PullRequest
0 голосов
/ 18 марта 2019

Допустим, у меня есть следующий ViewSet Django Rest Framework:

from django.contrib.auth import get_user_model
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response


class SubscriptionViewSet(ViewSet):
    def list(self, request):
        data = {'user_count': get_user_model().objects.count()}
        return Response(data)

Как использовать его вместе с last_modified декоратором от Django? Или как реализовать такую ​​функциональность?

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Я проверил пакет, упомянутый @Makarand Bauskar.Однако я не был удовлетворен.Он не активен и использует собственный способ работы / работы с заголовком Last-Modified.Поэтому я решил создать новый пакет django-rest-framework-condition , который будет:

  1. Повторно использовать реализацию из Django
    • , он получит исправления от Django
    • Вы можете использовать его так же, как описано в Django документах
  2. Предоставить @last_modified и @etag decorator

Для установки:

pip install django-rest-framework-condition

Использование:

from django.contrib.auth import get_user_model
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework_condition import last_modified


def my_last_modified(request, *args, **kwargs):
    return datetime(2019, 1, 1)


class SubscriptionViewSet(ViewSet):
    @last_modified(my_last_modified)
    def list(self, request):
        data = {'user_count': get_user_model().objects.count()}
        return Response(data)
0 голосов
/ 18 марта 2019

@ Йозо

Вы можете проверить приложение https://github.com/jatir/django-rest-framework-last-modified django, чтобы использовать Last-Modified

Edit:

вы можете проверить пример в тестовой директории https://github.com/jatir/django-rest-framework-last-modified/blob/master/tests/views.py#L14

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...