Python 类型错误:';商店';对象是不可编辑的
我想用数据库记录搜索标题。数据库记录可能在我要搜索的许多单元格中包含子字符串。我想呈现所有记录,但无法显示,因为出现了“TypeError:“Store”对象不可编辑” 我的application.py是:Python 类型错误:';商店';对象是不可编辑的,python,flask,Python,Flask,我想用数据库记录搜索标题。数据库记录可能在我要搜索的许多单元格中包含子字符串。我想呈现所有记录,但无法显示,因为出现了“TypeError:“Store”对象不可编辑” 我的application.py是: def bookresult(): isbn = request.form.get("isbn") title = request.form.get("title") author = request.form.get("author") year = req
def bookresult():
isbn = request.form.get("isbn")
title = request.form.get("title")
author = request.form.get("author")
year = request.form.get("year")
submit = []
session = Session()
result = session.query(Store).all()
for result in result:
if title in result.title:
return render_template("bookresult.html",results=result)
return render_template("login.html", message="Not found")
session.commit()
我的bookresult.html是:
{% block body %}
<h1> Search result book </h1>
<table>
<tr>
<th> ISBN number </th>
<th> Book title </th>
<th> Author name </th>
<th> Publish year </th>
</tr>
<tr>
{% for result in results %}
<td> {{ result.isbn }} </td>
<td> {{ result.title }} </td>
<td> {{ result.author }} </td>
<td> {{ result.year }} </td>
{% endfor %}
</tr>
</table>
{% endblock %}
{%block body%}
搜索结果书
国际书号
书名
作者姓名
出版年
{结果中的结果为%}
{{result.isbn}
{{result.title}
{{result.author}
{{result.year}
{%endfor%}
{%endblock%}
如果删除了html文件中的for循环,则上述代码可以工作。但是如何不在html文件中进行迭代就获得所有记录呢。
如果我的搜索字符串与数据库单元格匹配,如何在html文件中迭代获取记录?问题发生在
a) 如果。。是真语法
b) 在模板中呈现不会反复迭代。你必须马上通过。
c) {%fori in range(count)%}将导致int对象的迭代,即我们只能以列表[i]的形式访问列表的元素
现在application.py将如下所示:
@app.route("/bookresult", methods=['POST'])
def bookresult():
isbn = request.form.get("isbn")
title = request.form.get("title")
author = request.form.get("author")
year = request.form.get("year")
session = Session()
list1 = []
list2 = []
list3 = []
list4 = []
results = session.query(Store).all()
# return render_template("message.html",result=type(results))
for i in results:
if (title in i.title) is True:
list1.append(i.isbn)
list2.append(i.title)
list3.append(i.author)
list4.append(i.year)
# counter = counter + 1
# else:
# counter = counter + 1
# if (title in i) is True:
# return render_template("bookresult.html",results=i)
# counter = counter + 1
# else:
# counter = counter + 1
# return render_template("bookresult.html", results=list1, list2, list3, list4)
return render_template("bookresult.html", count=len(list1), result1=list1, result2=list2, result3= list3, result4= list4)
session.commit()
和bookresult.html将是:
{% for i in range(count) %}
<tr>
<td> {{ result1[i] }} </td>
<td> {{ result2[i] }} </td>
<td> {{ result3[i] }} </td>
<td> {{ result4[i] }} </td>
</tr>
{% endfor %}
{范围(计数)%内的i的%
{{result1[i]}
{{result2[i]}
{{result3[i]}
{{result4[i]}
{%endfor%}
错误具体发生在哪里?可能在html文件中。如果我在html中删除for循环,则会起作用。但如果我在html1中删除for循环,则只显示一条记录。因此,问题在for循环中。有意义的是,如果某个东西是可测试的,那么它就是被检查的地方;而“结果”显然不是。如果在评论中要求您澄清问题,请理解问题本身需要澄清;所以,不要在评论中回答,而是编辑你的问题以包含相关信息。如何获得所有可能记录的结果。。