gpt4 book ai didi

python - Flask 和 Python 如何为 mysql 数据库中的数据制作搜索引擎

转载 作者:可可西里 更新时间:2023-11-01 07:27:26 30 4
gpt4 key购买 nike

我想通过在 html 输入字段中输入他们的名字来为学生信息创建某种搜索引擎,但是我的代码有一些问题。不过,我正在将 Flask 与 Python 结合使用。这是我的 project.py 代码:

@app.route('/search', methods=['GET', 'POST'])
def search():
if request.method == "POST":
db = MySQLdb.connect(user="root", passwd="", db="cs324", host="127.0.0.1")
c=db.cursor()
c.executemany('''select * from student where name = %s''', request.form['search'])
for r in c.fetchall():
print r[0],r[1],r[2]
return redirect(url_for('search'))
return render_template('search.html')

这是我的 search.html 代码:

{% extends "hello.html" %}
{% block content %}
<div class="search">
<form action="" method=post>
<input type=text name=search value="{{ request.form.search}}"></br>
<div class="actions"><input type=submit value="Search"></div>
</form>
</div>
{% for message in get_flashed_messages() %}
<div class=flash>
{{ message }}
</div>
{% endfor %}
{% endblock %}

当我点击“搜索”按钮时,没有任何反应,我检查了数据库,里面有一些数据,所以它不是空的,我找不到哪里出错了,请帮忙?

最佳答案

确保操作指向正确的 url

我认为您使用错误的 action 呈现表单以提交表单。

您的版本正在使用 action="",我猜应该是 action="/search"

因此您的模板应更改为:

{% extends "hello.html" %}
{% block content %}
<div class="search">
<form action="/search" method=post>
<input type=text name=search value="{{ request.form.search}}"></br>
<div class="actions"><input type=submit value="Search"></div>
</form>
</div>
{% for message in get_flashed_messages() %}
<div class=flash>
{{ message }}
</div>
{% endfor %}
{% endblock %}

不要重定向到你的结果

您现有的代码正在处理 POST,但在第一个循环中它最终返回 redirect

@app.route('/search', methods=['GET', 'POST'])
def search():
if request.method == "POST":
db = MySQLdb.connect(user="root", passwd="", db="cs324", host="127.0.0.1")
c=db.cursor()
c.executemany('''select * from student where name = %s''', request.form['search'])
for r in c.fetchall():
print r[0],r[1],r[2]
return redirect(url_for('search')) # <- Here you jump away from whatever result you create
return render_template('search.html')

为最终报告呈现模板

您的代码不会在 POST 分支中显示任何呈现您在数据库中找到的内容的尝试。

你应该调用 render_template() 而不是 print r[0], r[1]...

像这样

@app.route('/search', methods=['GET', 'POST'])
def search():
if request.method == "POST":
db = MySQLdb.connect(user="root", passwd="", db="cs324", host="127.0.0.1")
c=db.cursor()
c.executemany('''select * from student where name = %s''', request.form['search'])
return render_template("results.html", records=c.fetchall())
return render_template('search.html')

关于python - Flask 和 Python 如何为 mysql 数据库中的数据制作搜索引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521652/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com