#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')