Flask实现简单搜索功能
Flask实现简单搜索功能
主要功能是通过form的方式传值,再到数据库中查询。下面是数据库的内容我们这里主要是实现对content进行模糊匹配。
首先打开pycharm,构建一个最简单的flask应用。
#search.py from flask import Flask app = Flask(__name__) @app.route("/") def index(): return render_template('search.html') if __name__ =="__main__": app.run() |
既然要搜索,必要要连接数据库,要引入SQLAlchemy这个包。
#search.py from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:123456@127.0.0.1:3306/test?charset=utf8' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True #root用户名123456密码 test数据库 |
最后我们需要从form表单拿到我们想要的数据。然后进行数据库查询操作
@app.route('/', methods=['post', 'get']) def search(): content = request.form.get('content') #需要查询的内容 if content is None: content = " " quotes = Quotes.query.filter(Quotes.content.like("%"+content+"%")if content is not None else "").all() #查询跟content有关的数据,返回结果为列表 return render_template('search.html',quotes = quotes) #将查询结果返回到前端 |
#search,html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="{{url_for('search')}}"> <input type="text" name="content" id="content" placeholder="请输入搜索内容"> <input type="submit" value="搜索"> </form> <div> <table border="1px" cellspacing="0px"> {% for i in quotes %} <tr> <td>名字</td> <td>{{i.name}}</td> <td>内容</td> <td>{{i.content}}</td> </tr> {% endfor %} </table> </div> </body> </html> |
效果如下:
一个简单的查询功能就完成了,这里只是做了单条件模糊查询。接下来介绍多条件模糊查询和精确查询
#多条件模糊查询 content = Quotes.query.filter( Quotes.id.like("%" + id + "%") if id is not None else "", Quotes.name.like("%" + name + "%") if name is not None else "", Quotes.content.like("%" + content + "%") if content is not None else "" ).all() |
#单条件精确查询 content = Quotes.query.filter_by(id=id).all() |
#多条件精确查询 content = Quotes.query.filter_by(id=id,name=name).all() |
最后附上完整代码
#search.py from flask import Flask, config, render_template, request, flash, url_for, session from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config.from_object(config) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:1914571065lyj@127.0.0.1:3306/java2019?charset=utf8' app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True db = SQLAlchemy(app) class Quotes(db.Model): id = db.Column(db.Integer, primary_key=True, comment='ID') name = db.Column(db.String(255), unique=True, comment='名称') content = db.Column(db.String(255), comment='内容') @app.route('/', methods=['post', 'get']) def search(): content = request.form.get('content') if content is None: content = " " quotes = Quotes.query.filter(Quotes.content.like("%"+content+"%")if content is not None else "").all() return render_template('search.html',quotes = quotes) if __name__ == "__main__": app.run(debug=True) |
#search.py <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form method="post" action="{{url_for('search')}}"> <input type="text" name="content" id="content" placeholder="请输入搜索内容"> <input type="submit" value="搜索"> </form> <div> <table border="1px" cellspacing="0px"> {% for i in quotes %} <tr> <td>名字</td> <td>{{i.name}}</td> <td>内容</td> <td>{{i.content}}</td> </tr> {% endfor %} </table> </div> </body> </html> |
Flask实现简单搜索功能相关推荐
- python discuz搜索api_Django用内置方法实现简单搜索功能的方法
Model中分别提供了filter方法和icontains方法实现简单的搜索功能. html页面中实现搜索框 模板api_test_manage.html中增加以下内容 {% csrf_token % ...
- vue实现简单搜索功能
目录 1.概述 2.功能逻辑 2.1功能流程 2.2 流程图 3.功能实现 3.1 vue组件化 3.2 代码 3.3 动态效果 1.概述 在vue项目中,搜索功能是我们经常需要使用的一个场景,最常用 ...
- Java Web简单搜索功能实现
小demo,没有使用框架. webapp项目,用到了servlet + jsp,使用jdbc从MySQL中查询数据 构建工具maven 先上截图 pom.xml 注意版本问题! <propert ...
- vue 使用 el-table 添加搜索框 实现简单搜索功能 ,同时判断输入是否为空
前言: vue 项目 使用 el-table ,想给 表格上方添加搜索功能 ,虽然 element 官方文档 自带类似的搜索框 我这里没有 使用官方文档的方法 ,我是通过使用两个操作数组的方法来实现搜 ...
- 当前页面实现简单搜索功能
功能描述:在搜索框中输入内容,在渲染出的网络数据中取出带输入关键字的内容,单独显示 功能实现: 1.index.wxml:循环一个数组 <view class='preson'><i ...
- HTML+JavaScript简单搜索功能实现
<!DOCTYPE html> <html><head><title>百度一下</title><meta charset=" ...
- Flask 新闻网站搜索功能的实现(笔记)
文章目录 思路 实现 第一步:在前端页面上定制搜索框 第二步 编写视图函数 参考资料 思路 1.在前端页面向服务器提交数据,这里使用post方法 2.服务器端view层接受到数据,在通过model层从 ...
- 夸克、QQ浏览器、简单搜索竞品分析报告
作者:迷航 (转载已取得作者授权) 一.竞品分析目的 伴随着中国移动互联网的人口红利逐渐到顶,手机浏览器市场的马太效应也越发强烈.在激烈的竞争环境下,仍有新价值要素正在带来新的机会:Z时代.00后用户 ...
- html织梦站内搜索代码,简单三步-实现dede站内搜索功能
前几天,在帮一个客户在做网站时,因为客户要求网站内要弄一个产品搜索功能.因为才接触dede不久,对于dede也不是很熟悉.在网上查询了一些资料,但觉得网上的资料很杂乱,把一个简单的东西变为复杂化了.下 ...
最新文章
- 最新图神经网络论文笔记汇总(附pdf下载)
- 《工业大数据白皮书》2019版正式发布
- 用ASP实现在线压缩与解压缩
- 建模的常用手段:组合与聚合
- 小马哥spring编程核心思想_Spring核心思想理解
- Github git 命令下载加速
- 收获,不止SQL优化——抓住SQL的本质--第七章
- ssis行计数变量_SSIS管道性能计数器指南
- Asciidoctor Maven插件使用
- 受检异常 非受检异常_C++异常实战之十一 使用scope_fail处理复杂场景(非fail-fast)下的异常...
- Android Context简单说明
- 第三季-第15课-信号通讯编程
- 安装惠普M1136打印机一直处于“新设备已连接”状态 解决方法
- grub rescue
- 打造前端 Deepin Linux 工作环境——安装 nodejs 环境,git 版本管理
- grub引导项修复详解_grub2修复引导 · LINCHUAN的小站
- dorado java_概述-Dorado JDBC Addon
- SketchUp + Photoshop:别墅平面图制作教程
- java实现生成二维码及扫码登录
- NetFlow学习总结
热门文章
- dsp28335杂记1
- phpmail通过qq发邮箱失败_请问phpmailer发送Gmail总是失败是什么原因,qq邮件可以发送出去...
- 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
- 176. 第二高的薪水(SQL中的ifnull函数和limt1,1的使用)
- 销售的几种层次-销售笔记
- jsmap(桔色棉袄配什么颜色打底衫)
- R(13):第三章:3.2数据的分布
- Ubuntu下输入金钱符号时只能输入“₵“无法输入“$“
- 【写作中的复杂名词短语练习题】前置与后置修饰
- 海康摄像头的ISAPI协议