TypeError:“存储”对象不可编辑

2024-10-03 21:36:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用数据库记录搜索标题。数据库记录可能在我要搜索的许多单元格中包含子字符串。我想呈现所有记录,但无法显示,因为出现了“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 %}

如果删除了html文件中的for循环,则上述代码可以工作。但是如何不在html文件中进行迭代就获得所有记录呢。 如果我的搜索字符串与数据库单元格匹配,如何在html文件中迭代获取记录


Tags: form数据库gettitlerequesthtml记录result
1条回答
网友
1楼 · 发布于 2024-10-03 21:36:06

问题发生在 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 %}

相关问题 更多 >