Как получить доступ к параметру запроса в сериализаторе django rest framework

#django #django-rest-framework #django-views

#джанго #django-rest-фреймворк #джанго-просмотры

Вопрос:

Я пытаюсь получить доступ к параметру запроса в сериализаторе. Я не уверен, что я делаю неправильно, я попытался следовать нескольким решениям.

 class MyViewSet(viewsets.ModelViewSet):  .......  serializer_class = MySerializer   def get_serializer_context(self):  context = super().get_serializer_context()  context['test'] = "something"  return context  

В моем сериализаторе,

 class MySerializer(serializers.ModelSerializer):  isHighlight = serializers.SerializerMethodField()   def get_isHighlight(self, obj):  print(self.context['test'])  return self.context['test']  

Я получаю эту ошибку,

 Django Version: 3.2.7 Exception Type: KeyError Exception Value: 'test'  

Интересно, что я вижу, что он может печатать значение в консоли, а затем исключение. Я также попытался напрямую получить доступ к переменной запроса, например

 class MySerializer(serializers.ModelSerializer):  isHighlight = serializers.SerializerMethodField()   def get_isHighlight(self, obj):  return self.context['request'].query_params['page']  

Но он показывает ту же ошибку

 Django Version: 3.2.7 Exception Type: KeyError Exception Value: 'request'  

Есть какие-нибудь предложения? Заранее спасибо.

Комментарии:

1. Что self.context печатается в консоли?

2. Что это print(self.context.__dict__.keys()) дает вам?

3. он вылетает и выдает ошибку «объект’dict’ не имеет атрибута ‘ dict ‘».

4. @SihanTawsik Я могу получить доступ к параметру запроса в get_isHighlight. Проблема в том, что в конце он выдает ответ 400. Даже если я верну константу типа «возврат 1». Похоже, исключение составляет, если я обращаюсь к параметру запроса в этой функции.

5. request.query_params.get('yourparamter')