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实现简单搜索功能相关推荐

  1. python discuz搜索api_Django用内置方法实现简单搜索功能的方法

    Model中分别提供了filter方法和icontains方法实现简单的搜索功能. html页面中实现搜索框 模板api_test_manage.html中增加以下内容 {% csrf_token % ...

  2. vue实现简单搜索功能

    目录 1.概述 2.功能逻辑 2.1功能流程 2.2 流程图 3.功能实现 3.1 vue组件化 3.2 代码 3.3 动态效果 1.概述 在vue项目中,搜索功能是我们经常需要使用的一个场景,最常用 ...

  3. Java Web简单搜索功能实现

    小demo,没有使用框架. webapp项目,用到了servlet + jsp,使用jdbc从MySQL中查询数据 构建工具maven 先上截图 pom.xml 注意版本问题! <propert ...

  4. vue 使用 el-table 添加搜索框 实现简单搜索功能 ,同时判断输入是否为空

    前言: vue 项目 使用 el-table ,想给 表格上方添加搜索功能 ,虽然 element 官方文档 自带类似的搜索框 我这里没有 使用官方文档的方法 ,我是通过使用两个操作数组的方法来实现搜 ...

  5. 当前页面实现简单搜索功能

    功能描述:在搜索框中输入内容,在渲染出的网络数据中取出带输入关键字的内容,单独显示 功能实现: 1.index.wxml:循环一个数组 <view class='preson'><i ...

  6. HTML+JavaScript简单搜索功能实现

    <!DOCTYPE html> <html><head><title>百度一下</title><meta charset=" ...

  7. Flask 新闻网站搜索功能的实现(笔记)

    文章目录 思路 实现 第一步:在前端页面上定制搜索框 第二步 编写视图函数 参考资料 思路 1.在前端页面向服务器提交数据,这里使用post方法 2.服务器端view层接受到数据,在通过model层从 ...

  8. 夸克、QQ浏览器、简单搜索竞品分析报告

    作者:迷航 (转载已取得作者授权) 一.竞品分析目的 伴随着中国移动互联网的人口红利逐渐到顶,手机浏览器市场的马太效应也越发强烈.在激烈的竞争环境下,仍有新价值要素正在带来新的机会:Z时代.00后用户 ...

  9. html织梦站内搜索代码,简单三步-实现dede站内搜索功能

    前几天,在帮一个客户在做网站时,因为客户要求网站内要弄一个产品搜索功能.因为才接触dede不久,对于dede也不是很熟悉.在网上查询了一些资料,但觉得网上的资料很杂乱,把一个简单的东西变为复杂化了.下 ...

最新文章

  1. 最新图神经网络论文笔记汇总(附pdf下载)
  2. 《工业大数据白皮书》2019版正式发布
  3. 用ASP实现在线压缩与解压缩
  4. 建模的常用手段:组合与聚合
  5. 小马哥spring编程核心思想_Spring核心思想理解
  6. Github git 命令下载加速
  7. 收获,不止SQL优化——抓住SQL的本质--第七章
  8. ssis行计数变量_SSIS管道性能计数器指南
  9. Asciidoctor Maven插件使用
  10. 受检异常 非受检异常_C++异常实战之十一 使用scope_fail处理复杂场景(非fail-fast)下的异常...
  11. Android Context简单说明
  12. 第三季-第15课-信号通讯编程
  13. 安装惠普M1136打印机一直处于“新设备已连接”状态 解决方法
  14. grub rescue
  15. 打造前端 Deepin Linux 工作环境——安装 nodejs 环境,git 版本管理
  16. grub引导项修复详解_grub2修复引导 · LINCHUAN的小站
  17. dorado java_概述-Dorado JDBC Addon
  18. SketchUp + Photoshop:别墅平面图制作教程
  19. java实现生成二维码及扫码登录
  20. NetFlow学习总结

热门文章

  1. dsp28335杂记1
  2. phpmail通过qq发邮箱失败_请问phpmailer发送Gmail总是失败是什么原因,qq邮件可以发送出去...
  3. 安达智能通过注册:拟募资11.7亿 刘飞与何玉姣夫妇为大专学历
  4. 176. 第二高的薪水(SQL中的ifnull函数和limt1,1的使用)
  5. 销售的几种层次-销售笔记
  6. jsmap(桔色棉袄配什么颜色打底衫)
  7. R(13):第三章:3.2数据的分布
  8. Ubuntu下输入金钱符号时只能输入“₵“无法输入“$“
  9. 【写作中的复杂名词短语练习题】前置与后置修饰
  10. 海康摄像头的ISAPI协议