通常,使用白名单更安全可靠。下面是一个示例,如何使用白名单来处理查询参数:
def get_data(request):
    # 定义可允许的参数
    allowed_params = ['id', 'name', 'category']
    # 获取查询参数
    query_params = request.GET
    # 检查查询参数是否包含非法参数
    for param in query_params:
        if param not in allowed_params:
            return HttpResponseBadRequest("Illegal query parameter: %s" % param)
    # 将允许的参数传递给查询
    data = MyModel.objects.filter(**query_params)
    
    return JsonResponse(data)
这将确保您的API仅接受预期的查询参数。尽管这样可能需要更多的工作来确保所有需要的参数都在白名单中,但它提供了更好的控制和安全性。