如何在Django Rest Framework中访问QueryString值

wfauudbj  于 2023-10-21  发布在  Go
关注(0)|答案(3)|浏览(125)

我正在尝试访问序列化程序类中的querystring值。

class OneZeroSerializer(rest_serializer.ModelSerializer):

    location = rest_serializer.SerializerMethodField('get_alternate_name')

    def get_alternate_name(self, obj):
        view = self.context['view']
        print view.kwargs['q']  #output is {}
        return 'foo'

    class Meta:
        model = OneZero

        fields = ('id', 'location')

浏览次数

class OneZeroViewSet(viewsets.ModelViewSet):

   serializer_class = OneZeroSerializer

   queryset = OneZero.objects.all()

这是访问querystring的正确方法吗?

ltqd579y

ltqd579y1#

使用ViewSet时,可以在序列化程序上下文中访问请求(就像访问视图一样)。您可以从此

def get_alternate_name(self, obj):
    request = self.context['request']
    print request.query_params['q']
    return 'foo'

属性view.kwargs包含从你的url-config解析的命名参数,也就是从path-part解析的。

cnjp1d6j

cnjp1d6j2#

根据文档,您要使用self.request.query_params
你可以看到它在这里被使用

  • 失望:*

在DRF 3.0之前:
使用request.QUERY_PARAMS的用法,而不是小写的request.query_params

zynd9foi

zynd9foi3#

self.context['request'].query_params

相关问题