Я пытаюсь запустить приложение Flask, показывая страницу обзора книги с возможностью отправки отзыва пользователя.Но я столкнулся с двумя проблемами:
1) Когда я пытаюсь запустить приведенный ниже код, URL-адрес "/ books / 553803700" перенаправляет меня на домашнюю страницу.
Iдумаю, есть проблема с
review = db.execute("SELECT review FROM reviews WHERE review_by = :review_by", {"review_by": current_user}).fetchone()
2), если я комментирую эту строку выше, страница работает.Но когда я пытаюсь отправить отзыв, появляется сообщение «Не найдено. Запрошенный URL-адрес не найден на сервере. Если вы ввели URL-адрес вручную, проверьте правильность написания и повторите попытку».
application.pyfile:
from flask import Flask, session, render_template, request, redirect, flash, jsonify
from flask_session import Session
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
....
### some app configuration, other routes
...
@app.route("/books/<isbn>")
def book(isbn):
try:
if globals()["session"]["username"]:
current_user = globals()["session"]["username"]
book = db.execute("SELECT * FROM books WHERE isbn = :isbn", {"isbn": isbn}).fetchone()
### here is that string
review = db.execute("SELECT review FROM reviews WHERE review_by = :review_by",
{"review_by": current_user}).fetchone()
if review is True:
return render_template("book.html", book=book, review=review)
else:
return render_template("book.html", book=book)
except:
return redirect("/login")
@app.route("/books/<isbn>/review", methods=['POST'])
def review(isbn):
review = request.form.get("review")
current_user = globals()["session"]["username"]
db.execute("INSERT INTO reviews (isbn, review_by, review) VALUES (:isbn, :review_by, :review)",
{"isbn": isbn, "review_by": current_user, "review": review})
db.commit()
db.close()
return redirect("/book/" + isbn)
book.html file:
{% extends "layout.html" %}
{% block getin %}
<h1>{{ book.title }}</h1>
<ul>
<li>Title: {{ book.title }}</li>
<li>ISBN: {{ book.isbn }}</li>
<li>Author: {{ book.author }}</li>
<li>Year: {{ book.year }}</li>
</ul>
{% endblock %}
{% block user_info %}
<h2>Would you like to leave your review?</h2>
{% if review %}
<div class="user-review">
{{ review }}
</div>
{% else %}
<form name="submit-review" action="/book/{{book.isbn}}/review" method="POST">
<textarea type="text" name="review" class="form-control" placeholder="Leave your review here">
</textarea>
<button class="btn btn-primary">Submit</button>
</form>
{% endif %}
<div class="row" style="margin-top:50px">
GoodReads reviews:
</div>
{% endblock %}
Буду очень признателен за помощь в решении этих 2 проблем