from drf_multiple_model.views import FlatMultipleModelAPIView
from api.pager import LimitPagination
from rest_framework import filters
from django.http import request
#视图函数
class SearchGroup(FlatMultipleModelAPIView):
authentication_classes=[] #取消全局用户认证
permission_classes=[] #取消全局权限验证
throttle_classes=[]
project_name=request.GET.get('project_anme') # 此行出错, 这个类里面,我要怎么获取 url 传过来的 参数
orderdate_gte=request.GET.get('order_date_gte') # 此行出错, 这个类里面,我要怎么获取 url 传过来的 参数
orderdate_ite=request.GET.get('order_date_ite') # 此行出错, 这个类里面,我要怎么获取 url 传过来的 参数
querylist=[
{'queryset':models.Pro1.objects.filter(project_name__contains=project_name,order_date__gte=orderdate_gte,order_date__ite=orderdate_ite),
'serializer_class': SearchGroupRebarSerializer,
},
{'queryset':models.Pro2.objects.filter(project_name__contains=project_name,order_date__gte=orderdate_gte,order_date__ite=orderdate_ite),
'serializer_class': SearchGroupRebarSerializer,
},
]
pagination_class=LimitPagination # 这个类分页只能用limit
django rest framework 怎么获取url参数
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 咕泡-三木 2021-10-16 14:42关注
django-rest-framework 会对 django 中的request进行包装,所有不能按django那样来使用
request
对象解决办法:
request.GET
改为request.query_params
,使用drf的方式获取url参数
request
要写在方法里而不是类里,现在只是定义类,在之后收到请求才会实用类,前后关系错了
稍后可以给你写个demo代码吧
后面,
querylist
的写法也有点问题,project_name__contains
是因为变量名叫project_name
还是models.Pro2
有一个属性名叫做project_name
?
更新:
class SearchGroup(FlatMultipleModelAPIView): def initial(self, request, *args, **kwargs): super(SearchGroup, self).initial(request, *args, **kwargs) # 代码执行到这里时,说明请求已经收到,才可以从url获取数据 project_name = request.query_params.get("project_anme") orderdate_gte = request.query_params.get("order_date_gte") orderdate_ite = request.query_params.get("order_date_ite") # 修改API视图的querylist属性,注意每次请求只可以self的,不要修改类,否则引发bug self.querylist = [ { "queryset": models.Pro1.objects.filter( project_name__contains=project_name, order_date__gte=orderdate_gte, order_date__ite=orderdate_ite, ), "serializer_class": SearchGroupRebarSerializer, }, { "queryset": models.Pro2.objects.filter( project_name__contains=project_name, order_date__gte=orderdate_gte, order_date__ite=orderdate_ite, ), "serializer_class": SearchGroupRebarSerializer, }, ]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误