gpt4 book ai didi

python - 为从数据库检索的数据创建动态html链接

转载 作者:行者123 更新时间:2023-12-03 02:36:15 25 4
gpt4 key购买 nike

我正在使用flask和html制作搜索引擎,同时将elasticsearch用于搜索功能。
这是我的 app.py 文件

from flask import Flask, render_template, request
from elasticsearch import Elasticsearch

app = Flask(__name__)
es = Elasticsearch()
@app.route('/',methods=["GET","POST"])
def index():
q = request.form.get("q")
if q is not None:
resp = es.search(index='aman', body={"query": {"match":{"NAME": q}}})
return render_template('index1.html', q=q, response=resp["hits"]["hits"])
else:
return render_template('index1.html')

if __name__ =="__main__":
app.run(debug=True)

这是我的 index.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/" method="post" autocomplete="off">
<label for="q"> search here : </label><input type="text" name="q" id="q" value="{{q}}">
<input type="submit" value="search">
{{response}}

</form>
</body>
</html>

我的数据以json格式存储。因此,在搜索json时,将检索格式化的数据。由于可以根据查询一次检索多个文档,因此在单个页面上看起来很破旧。
Shabby representation of data obtained upon searching
因此,我尝试通过建立html链接并使用html中的有序列表仅显示数据名称来使其变得更整洁。我这样做是通过将index.html中的 {{response}} 替换为:
    <ol>
{% for resp in response %}
<li><a href="{{resp['_source'].url}}"> {{resp._source.NAME}}</a></li>
{% endfor %}
</ol>

现在我正在获取所需格式的数据,即 result displayed in desired format.
这样做的问题是,理想情况下,单击URL链接后,我应该获取与该URL相关联的数据。但它不会返回任何东西。

最佳答案

The requested URL was not found on the server



此错误非常明显,因为在 /处只有一条路由。您可以通过两种方式解决此问题。您可以添加为单个项目添加 View 的路线,也可以使您的项目在同一页面中可折叠。我认为最好添加可折叠的项目,这样您就不必再次进行 Elasticsearch 。

示例代码显示带有NAME且内容为ABOUT的卡片。您可以根据需要自定义它。有关折叠卡片的更多信息,请点击 https://getbootstrap.com/docs/4.3/components/collapse/
<ol>
<div class="accordion" id="accordionExample">
<div class="card">
{% for resp in response %}
<div class="card-header" id="heading{{ loop.index }}">
<h2 class="mb-{{ loop.index }}">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse{{ loop.index }}" aria-expanded="true" aria-controls="collapse {{ loop.index }}">
{{resp._source.NAME}}
</button>
</h2>
</div>

<div id="collapse {{loop.index}}" class="collapse show" aria-labelledby="heading{{loop.index}}" data-parent="#accordionExample">
<div class="card-body">
{{resp._source.ABOUT}}
</div>
</div>
{% endfor %}
</div>
</div>
</ol>

关于python - 为从数据库检索的数据创建动态html链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58836204/

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