django - 如何使 DRF 将查询参数传递给操作
问题描述
我正在使用 django-filters 在 django rest 框架中使用过滤。由于我的视图集上的一些@actions 的性质,我需要将过滤器参数传递给这些操作。有没有办法将视图集的当前列表视图的查询参数传递给这些操作?
解决方案
我通过覆盖默认的 django-rest-framework 渲染器并更改get_extra_actions
方法以使用正确的查询参数反映 url 解决了这个问题。
def get_extra_actions(extra_actions_dict, view):
query_params = view.request.query_params
for k, v in extra_actions_dict.items():
extra_actions_dict[k] = f'{v}?{urlencode(query_params, doseq=True)}'
return extra_actions_dict
class BrowsableAPIRenderer(RestBrowsableAPIRenderer):
def get_extra_actions(self, view, status_code):
extra_actions_dict = super(BrowsableAPIRenderer, self).get_extra_actions(view, status_code)
return get_extra_actions(extra_actions_dict, view)
推荐阅读
- haskell - Control.Lens.Plated.transform 在使用 Data.Data.Lens.uniplate 提供 Plated 实例时不会遍历整个结构
- windows - 将多个 Zip 中的特定文件类型提取到 Powershell 中的一个文件夹
- c++ - 将使用 bitset 转换的二进制数放入向量中
- pandas - Pandas Pivot 多个日期列
- r - R:按ID计算特定日期之前的天数
- recursion - cudaErrorIllegalInstruction 递归函数调用
- java - Java 弹簧安全。记录的用户信息
- java - 为什么它给我一个“不幸
已结束”当我在外部设备上运行应用程序时 - html - 如何将wordpress页面转换为普通的html页面?
- java - 有没有办法合法地投射 Mockito 模拟对象?