Как объявить переменную внутри url_for для перехода в функцию, вызываемую в flask? - PullRequest
0 голосов
/ 16 июня 2020

В основном у меня есть список под названием книги, и я отображал ссылку на каждую книгу в списке книг, и я хочу, чтобы, если пользователь нажимает на любую из книг, он переводит их на страницу отображения, которая отображает информацию о книге. . Для этого мне нужно получить имя ссылки, которую нажимает пользователь, потому что это будет имя книги, поэтому я могу передать его в свою функцию для получения информации. Это мой код с использованием Jinja2.

{% for book in loopthis %}
<a href="{{ url_for('displayinfo')}}">{{ book }}</a>
{%endfor%}

Я не знаю, как объявить переменную, равную названию книги. Я думал сделать что-то подобное, но это не сработало.

{% for book in loopthis %}
<a href="{{ url_for('displayinfo', name={{ book }})}}">{{ book }}</a>
{%endfor%}

это мой flask код.

@app.route("/displayinfo", methods=["POST", "GET"])
def displayinfo():

    name = request.args.get('name', type=str)
    findauthor = db.execute("SELECT author FROM books WHERE     title=:title", {"title": name}).fetchone()
    findtitle = db.execute("SELECT title FROM books WHERE title=:title", {"title": name}).fetchone()
    findyear = db.execute("SELECT year FROM books WHERE title=:title", {"title": name}).fetchone()
    findisbn = db.execute("SELECT isbn FROM books WHERE title=:title", {"title": name}).fetchone()
    
    return render_template("displayinfo.html", printauthor = findauthor, printtitle = findtitle, printyear = findyear, printisbn = findisbn)

1 Ответ

0 голосов
/ 16 июня 2020

Вы должны послать в эту функцию что-то вроде id вашей книги или ее имени и в функции найти эту книгу в своей базе данных.

{% for book in loopthis %}
<a href="{{ url_for('displayinfo', name=book.id)}}">{{ book }}</a>
{%endfor%}

или

{% for book in loopthis %}
<a href="{{ url_for('displayinfo', name=book.name)}}">{{ book }}</a>
{%endfor%}

И функция должна выглядеть так:

@route('/smth/<id:int>')
def displayinfo(id):
    book = findBookById(id)
...