我在哪里可以访问Django Rest Framework中的请求参数? [英] Where can I access request parameters in Django Rest Framework?

查看:59
本文介绍了我在哪里可以访问Django Rest Framework中的请求参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Django Rest Framework和python-requests,并通过URL传递几个变量,如下所示.

I'm using Django Rest Framework and python-requests and passing several variables through the URL as shown below.

"GET/api/boxobjects/?format = json& make = Prusa& model = i3& plastic = PLA HTTP/1.1"

"GET /api/boxobjects/?format=json&make=Prusa&model=i3&plastic=PLA HTTP/1.1"

因此,我传递了变量make,model和plastic.推荐的访问这些参数的方法如下所示.

So I'm passing the variables make, model, and plastic. The recommended method to access these parameters is shown below.

makedata = request.GET.get('make', '')

但是,我不知道在哪里放置那行代码.我已经完成了Django Rest Framework的教程,并设置了与该教程大致匹配的视图.

However, I have no idea where to place that line of code. I've completed the tutorial for Django Rest Framework and have my views set up to roughly match the tutorial.

views.py

@api_view(['GET'])
@login_required
def api_root(request, format=None):
    return Response({
        'Users': reverse('api:user-list', request=request, format=format),
        'Objects': reverse('api:object-list', request=request, format=format),
        'Files': reverse('api:file-list', request=request, format=format),
        'Config Files': reverse('api:config-list', request=request, format=format),
        'Box-objects': reverse('api:box-object-list', request=request, format=format),

    })

class BoxViewSet(viewsets.ModelViewSet):

    queryset = Uploadobject.objects.all().exclude(verified=False)
    serializer_class = BoxSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                            IsBox)

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)

    #Maybe get function here? Not displaying
    '''
    def get(self, request):
        print ("request set here?")
    '''

我将在哪里放置一行代码来访问这些请求参数?

Where would I place the one line of code to access these request parameters?

推荐答案

class BoxViewSet(viewsets.ModelViewSet):
    queryset = Uploadobject.objects.all().exclude(verified=False)
    serializer_class = BoxSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                            IsBox)

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)


    def get_queryset(self):
        req = self.request
        print(req)
        make = req.query_params.get('make')
        if make:
            self.queryset = uploadobject.objects.filter(make=make)
            return self.queryset
        else:
            return self.queryset

该语句在做什么?

如果'make'位于请求的查询参数中,则使用基于'make' BoxViewSet queryset属性>并将其返回.否则,返回默认查询集,该查询集将排除任何未经验证的对象.

If 'make' is in the query params of the request then overwrite the BoxViewSet queryset property with a new queryset based on 'make' and return it. otherwise return the default queryset that excludes any objects that isn't verified.

这篇关于我在哪里可以访问Django Rest Framework中的请求参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆