📅  最后修改于: 2023-12-03 15:39:52.110000             🧑  作者: Mango
在很多网站和应用程序中,搜索栏的功能非常重要。本文将介绍如何编写一个简单的搜索栏 Python 程序。
在编写本程序时,我们将使用 Python 的 Flask 框架。该框架是一个轻量级 Web 应用程序框架,可以帮助我们快速创建 Web 应用程序。
我们还需要了解 HTML、CSS 和 JavaScript,这些技术可以帮助我们创建搜索栏的前端界面。
最后,我们将使用 SQLite 数据库来存储搜索结果。
下面是搜索栏 Python 程序的大致设计:
我们可以使用以下代码来创建 Flask 应用程序:
from flask import Flask, render_template, request
import sqlite3
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
这里我们导入了 Flask、render_template 和 sqlite3 模块,并创建了一个名为 app
的 Flask 应用程序。我们使用 @app.route('/')
装饰器来定义根路由,def index()
函数将渲染使用的 HTML 模板。
接下来,我们需要创建搜索栏的前端界面。我们可以使用以下 HTML 和 CSS 代码来创建一个简单的搜索栏:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>搜索栏 Python 程序</title>
<style>
/* 样式表代码 */
</style>
</head>
<body>
<div class="search-container">
<form action="/" method="POST">
<input type="text" placeholder="输入搜索关键字" name="search">
<button type="submit">搜索</button>
</form>
</div>
</body>
</html>
我们在 HTML 文件中使用了简单的表单,其中包含一个输入字段和一个提交按钮。我们还可以使用 CSS 代码来美化搜索栏的样式。
现在,我们需要编写服务器端代码,以处理用户的搜索请求。我们可以使用以下代码:
@app.route('/', methods=['POST'])
def search():
search = request.form['search']
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute("SELECT * FROM articles WHERE title LIKE ?", ('%' + search + '%',))
articles = c.fetchall()
conn.close()
return render_template('index.html', articles=articles)
在这段代码中,我们定义了名为 search()
的函数,并使用 @app.route()
装饰器将其绑定到根路由上。此函数使用 request.form
来获取用户提交的搜索词,使用 SQLite 查询数据库中的所有文章。最后,我们使用 render_template()
将搜索结果返回给用户。
现在,我们需要连接我们的 SQLite 数据库。我们可以使用以下代码:
conn = sqlite3.connect('database.db')
c = conn.cursor()
c.execute('''CREATE TABLE articles
(title TEXT, content TEXT)''')
conn.close()
我们在这里创建了一个名为 articles
的新表,并在其中包含两个名为 title
和 content
的列。
接下来,我们需要编写 SQL 查询语句,以从数据库中检索与用户搜索词匹配的文章。我们可以使用以下代码:
c.execute("SELECT * FROM articles WHERE title LIKE ?", ('%' + search + '%',))
在这里,我们使用 LIKE
运算符来查找与用户搜索词匹配的文章标题。我们使用类似于字符串格式化的方式将用户搜索词与查询语句的 %
进行组合。
最后,我们需要将搜索结果呈现给用户。我们可以使用以下代码:
{% if articles %}
<ul>
{% for article in articles %}
<li>{{ article[0] }}</li>
{% endfor %}
</ul>
{% endif %}
这里,我们在 HTML 模板中使用了 jinja2 模板引擎。我们使用了一个 for
循环来遍历查询结果,并将结果呈现为一个无序列表。
这就是搜索栏 Python 程序的基本实现。我们使用了 Flask 框架、HTML、CSS 和 JavaScript 技术来创建前端界面,并使用了 Jinja2 及 SQLite 数据库来处理用户输入和搜索结果。这个程序可以进一步扩展以满足更多要求,并增加一些互动特性。