日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Flask实现简单搜索功能

發(fā)布時(shí)間:2024/1/8 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask实现简单搜索功能 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Flask實(shí)現(xiàn)簡(jiǎn)單搜索功能


主要功能是通過form的方式傳值,再到數(shù)據(jù)庫(kù)中查詢。下面是數(shù)據(jù)庫(kù)的內(nèi)容我們這里主要是實(shí)現(xiàn)對(duì)content進(jìn)行模糊匹配。

首先打開pycharm,構(gòu)建一個(gè)最簡(jiǎn)單的flask應(yīng)用。

#search.py

from flask import Flask

app = Flask(__name__)

@app.route("/")

def index():

??? return render_template('search.html')

if __name__ =="__main__":

??? app.run()

?

既然要搜索,必要要連接數(shù)據(jù)庫(kù),要引入SQLAlchemy這個(gè)包。

#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數(shù)據(jù)庫(kù)

最后我們需要從form表單拿到我們想要的數(shù)據(jù)。然后進(jìn)行數(shù)據(jù)庫(kù)查詢操作

@app.route('/', methods=['post', 'get'])

def search():

??? content = request.form.get('content') #需要查詢的內(nèi)容

??? if content is None:

??????? content = " "

??? quotes = Quotes.query.filter(Quotes.content.like("%"+content+"%")if content is not None else "").all() #查詢跟content有關(guān)的數(shù)據(jù),返回結(jié)果為列表

??? return render_template('search.html',quotes = quotes) #將查詢結(jié)果返回到前端

#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="請(qǐng)輸入搜索內(nèi)容">

??? <input type="submit" value="搜索">

</form>

<div>

??? <table border="1px" cellspacing="0px">

??????? {% for i in quotes %}

??????? <tr>

??????????? <td>名字</td>

??????????? <td>{{i.name}}</td>

??????????? <td>內(nèi)容</td>

??????????? <td>{{i.content}}</td>

??????? </tr>

??????? {% endfor %}

??? </table>

</div>

</body>

</html>


效果如下:

一個(gè)簡(jiǎn)單的查詢功能就完成了,這里只是做了單條件模糊查詢。接下來(lái)介紹多條件模糊查詢和精確查詢

#多條件模糊查詢

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='內(nèi)容')

?

?

@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="請(qǐng)輸入搜索內(nèi)容">

??? <input type="submit" value="搜索">

</form>

<div>

??? <table border="1px" cellspacing="0px">

??????? {% for i in quotes %}

??????? <tr>

??????????? <td>名字</td>

??????????? <td>{{i.name}}</td>

??????????? <td>內(nèi)容</td>

??????????? <td>{{i.content}}</td>

??????? </tr>

??????? {% endfor %}

??? </table>

</div>

</body>

</html>

?

總結(jié)

以上是生活随笔為你收集整理的Flask实现简单搜索功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。