滤波器参数

filterparams的Python项目详细描述


#python filterparams是一个库,用于分析url参数,以便在后端进行过滤。它提供了一种语法,将类似sql的查询映射到查询参数之上,并将其解析为一个python对象。


这是一个用于提供筛选集合api的助手库。
开发库的主要用例是将其与使用[jsonapi]标准的rest-api一起使用。因此,语法与标准完全兼容,并将所有内容封装在"filter"查询参数中。给定url(非url转义以获得更好的可读性):
``
/users?filter[param][name][like][no_default戋name]=doe&filter[param][first戋name]=doe%&filter[binding]=(!没有品牌名和名字,过滤器[顺序]=名称和过滤器[顺序]=描述(名字)
```

filter[param][name][like][no_default_name]=doe'
'&filter[param][first_name]=doe%&filter[binding]='
'(!没有品牌名和名字,过滤器[顺序]=名称'
'过滤器[顺序]=描述(名字)'
)参数=解析(url)


valid_filters=['eq','like']
default_filter='eq'

parser=build_parser(
valid_filters=valid_filters,
default_filter=default_filter,


````

将解析数据。您可以通过
`.param_order`和通过`.orders`访问解析的过滤器。在此特定情况下,参数顺序
将解析为:

`` python
和(
left=参数(
name='name',
alias='no_default_name',
filter='like',
value='doe%',
)和
right=参数(
name='first_name',
alias='first'u name',
filter='eq,
value='doe,



`` ` ` `


` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` br/>所有参数必须以"filter"作为前缀。可以使用筛选器查询特定数据,对结果应用顺序,并通过和、不是和或绑定组合筛选器。


通过在传递的查询参数中指定`[{key}`
来模拟对象的键。这样一来,filter[param]`filter[param]`filter[param]`filter指向filter对象中的param键。



\\\\\\\\\\\\\\










````
filter[param][{param参数名称}[{operation}[{alias}={{to查询值}
``` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ``

`操作和别名参数可以省略。如果未提供
` alias`则使用给定的参数名。
如果未提供'operation',则使用默认值(在
示例中,此值将相等)。

示例:
`````
filter[参数][电话号码][like]=001%
```

以"001"开头的RS。默认情况下,所有筛选器都是通过和子句组合的。
您可以通过指定'filter[binding]'参数来更改该值。

这是您可以定义的别名的位置。
绑定提供了将筛选器与和或组合的方法。
您还可以在此处否定筛选器。

拱门号码和搜索信息通过指定以下筛选器,

搜索"电话号码"和"搜索帐户号码"
```

,即使括号在这里没有用处,您也可以在更复杂的过滤器中使用它们。

下表总结了可能的配置选项:
<;table>;
<;thead>;
<;tr>;
<;th>;键入<;th>;
<;th&glt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt;lt><;tr>;
<;td>;或<;td>;
<;td>;<;。/td>;
<;td>;a b<;td>;
<;tr>;
<;tr>;
<;td>;不<;td>;
<;td>;!<;td>;
<;td>;!a</td>
</tr>
<tr>
<td>Bracket</td>
<td>()</td>
<td>(a|b)&c</td>
</tr>
</tbody>
</table>

### Ordering ###

To specify a sort order of the results the `filter[order]` parameter
may be used.可以多次指定该值。若要添加
排序,必须提供应排序的参数的名称,而不是其别名!

如果要按"名称"、"名字"和相反顺序排序,可以通过指定以下查询url
排序。

这就是为什么在处理查询
参数之前,必须添加后端应接受的筛选器。


您可以通过
`filterparams.build_parser`函数生成分析来限制允许的筛选器。您可以通过"valid\u filters"定义配置允许的
筛选器。此外,您还必须使用第二个"default\u filter"参数添加默认筛选器。


``python
from filterparams import build\u parser


valid\u filters=['eq','like']
default\u filter='eq'

parser=build\u parser(
valid\u filters=valid\u filters,
default\u filter=default\u filter,

query=parser({})
```



如果不需要任何验证,就可以使用"parse"函数。



``python
``从filterpararams import parse


```









//

//

//



//
/>```````=


//
文学学士凯瑟德我计划长期添加另一个使用此包的库,并提供一种将其映射到sqlalchemy模型的方法。
如果您计划执行此操作或将其用于其他数据映射,请与我联系,我将在自述文件中添加对它的引用。
-上述内容对生成任何语言的筛选查询结构的客户端库有效。
同样,一旦api稳定,我可能会添加一个javascript库。
-根据您的后端,支持
语言的所有功能(排序、参数绑定)可能没有意义。不过,您可能仍然希望使用它来分析基本参数,并忽略其余参数。

另外还有[werkzeug](https://github.com/mitsuhiko/werkzeug/blob/master/license)包用于支持在同一个密钥中包含多个值的dict。


com/cbrand/go filterparams)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么数据库最类似于Map,每个用户/id存储无限多个“键”和“值”?   java仅使用super pom进行测试   内存不足如何解析java。OutOfMemoryError:Java堆空间在增加堆大小的情况下将意味着延迟OutOfMemoryError   来自另一个类的mysql和java jdbc调用[运行时应用程序]   java通过下拉菜单更改搜索框搜索的内容   JAVAlang.ClassNotFoundException:sun。jdbc。odbc。JdbcOdbcDriver   java Selenium点击链接   JavaSpringHibernate:从唯一值列表中获取对象列表   java Bing广告与桌面身份验证问题   java如何在没有任何外部SDK的情况下从安卓打印到收据打印机?   未调用java菜单片段类   java在IDEA和PyCharm中同时为同一个项目工作   java我们如何为同一个异常提供不同的海关信息   jakarta ee中是否预定义了“请求”和“响应”变量或值?   java更好地解决“之前和之后”难题?   尝试将数据从Excel添加到Java   发送电子邮件的Java代码只适用于一个电子邮件id?   java如何从资产解析XML?