Python 类型错误:';商店';对象是不可编辑的

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

我想用数据库记录搜索标题。数据库记录可能在我要搜索的许多单元格中包含子字符串。我想呈现所有记录,但无法显示,因为出现了“TypeError:“Store”对象不可编辑”

我的application.py是:

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循环中。有意义的是,如果某个东西是可测试的,那么它就是被检查的地方;而“结果”显然不是。如果在评论中要求您澄清问题,请理解问题本身需要澄清;所以,不要在评论中回答,而是编辑你的问题以包含相关信息。如何获得所有可能记录的结果。。