python - 为什么我的路线没有以正确的参数将我带到我想在 Flask 中去的地方?
问题描述
因此,在我的路线 displayinfo 上,我正在显示信息,所以我制作了请求方法 GET,另外在我的 html 页面上,我有一个要求用户评论的表单,所以我发布了请求方法。但是,当我单击按钮提交表单信息时,它需要我到 displayinfo/,但我希望它带我到 displayinfo/(isbn 编号)
这是我的python代码
@app.route("/displayinfo/<book_isbn>", methods=["POST", "GET"])
def displayinfo(book_isbn):
#global Book_isbn
#Book_isbn = book_isbn
if request.method == "POST":
if not session.get("USERNAME") is None:
username = session.get("USERNAME")
review = request.form.get("review")
user_id = db.execute("SELECT user_id FROM users WHERE username=:username", {"username": username}).fetchone()
book_id = db.execute("SELECT book_id FROM books WHERE isbn=:isbn)", {"isbn": book_isbn}).fetchone()
db.execute("INSERT INTO reviews (comment, user_id, book_id) VALUES (:comment, :user_id, :book_id)",{"comment": review, "user_id": user_id, "book_id":book_id})
db.commit()
else:
return render_template("error.html", printthis="Not signed in.")
else:
if not session.get("USERNAME") is None:
booktitle = db.execute("SELECT title FROM BOOKS WHERE isbn = :isbn", {"isbn": book_isbn}).fetchone()
bookauthor = db.execute("SELECT author FROM BOOKS WHERE isbn = :isbn", {"isbn": book_isbn}).fetchone()
bookyear = db.execute("SELECT year FROM BOOKS WHERE isbn = :isbn", {"isbn": book_isbn}).fetchone()
bookisbn = db.execute("SELECT isbn FROM BOOKS WHERE isbn = :isbn", {"isbn": book_isbn}).fetchone()
#res = requests.get("https://www.goodreads.com/book/review_counts.json", params={"key": KqqGbJlg2XMOyLiYRAnhvQ, "isbns": bookisbn})
return render_template("displayinfo.html", printtitle=booktitle, printauthor=bookauthor,printyear=bookyear, printisbn=bookisbn, book=booktitle)
db.commit()
else:
return render_template("error.html", printthis="Not signed in.")
这是我的html代码
{% extends "template.html" %}
{% block title %}Bookstore{% endblock %}
{% block head %}{{ printtitle }}{% endblock %}
{% block body %}
{{ printtitle }}
{{ printauthor }}
{{ printyear }}
{{ printisbn }}
<p>Write a review: </p>
<form action="{{ url_for('displayinfo', book_isbn=book.isbn)}}" method="post">
<!--, book_isbn=book.isbn-->
<li><input type="text" name="review" placeholder="Write a review for {{ book }}"></li>
<div class="btn">
<button>Submit</button>
</div>
</form>
{% block text %}{{ review }}{% endblock %}
{% endblock %}
解决方案
后
db.commit()
粘贴下面的行
return redirect(url_for('displayinfo', book_isbn=book_isbn))
相关的进口是:
from flask import redirect, url_for
推荐阅读
- algorithm - 使用排列和组合遍历 N*N 矩阵的方法数
- c# - 通过c#向外部网站提交登录表单时出错
- gradle - 颤振运行失败:配置项目“:shared_preferences”时出现问题
- php - IN FLEX SLIDER prevoius 和下一个按钮删除浏览器后退图标单击滑块上一张幻灯片幻灯片
- javascript - 如何在本地运行平均堆栈应用程序时获取包含在 angularjs 控制器中的 json 文件?
- reactjs - Pass props through Route with HOC
- xamarin - Xamarin - 再次询问设备位置
- c++ - 如果派生类还具有基类中不存在的虚函数,则创建的 vptr 数
- c++ - 在文件中找到字符串后替换它旁边的字符
- assembly - “auipc dest, label”(和“la dest,label”)不会产生预期的列表