在项目中的表格上方,通常都会添加一个搜索窗口,按输入内容进行搜索。搜索过程是前端输入内容,提交一个表单到相应的路由函数,表单内容在函数中获取是通过request.args.get(‘q’, ”)。我这里搜索表单的id是q,如果获取的内容不存在则内容为空,则不过滤,否则通过Model.query.filter()来过滤相应的内容。下面通过不同部分来看看具体实现。
实现原理是Postgresql的LIKE语句,在项目中是用过SQLAlchemy的ilke方法来实现。
jinja2模板
搜索框是通过宏定义的。
{% import 'macros/form.html' as f with context' %}
{
{ f.search('admin.users') }}
下面看看宏的具体实现办法。templates/macros/form.html
。重点看下面两段代码:
...
{# Render a form tag that contains a CSRF token and all hidden fields. #}
{%- macro form_tag(endpoint, fid='', css_class='', method='post') -%}
<form action="{
{ url_for(endpoint, **kwargs) }}" method="{
{ method }}"
id="{