我如何在Flask中使用相同的信息呈现两个HTML页面?

问题描述 投票:0回答:1

在Flask的dashboard()函数中,将为用户提供一个要填写的搜索表格,填写表格后,他将获得他要搜索的一些书的名称。单击书名后,应该将他定向到HTML页面,在其中可以获取有关该书的一些信息。

@app.route('/dashboard', methods=['GET','POST'])
def dashboard():
    form = SearchForm()

    if form.validate_on_submit():
        if form.ISBN.data:
            results = Books.query.filter(Books.ISBN.like('%' + form.ISBN.data + '%')).all()
        elif form.Title.data:
            results = Books.query.filter(Books.Title.like('%' + form.Title.data + '%')).all()
        return render_template('search_results.html', name=current_user.username, form = form, results=results)

    return render_template('dashboard.html', name=current_user.username, form = form)

在上面的函数中,SearchForm是一个WTF烧瓶形式。

这是我的search_results.html中的代码:

{% for result in results: %}
   {{result.ISBN}}
   <a href="{{url_for('details')}}">{{result.Title}}</a> 
{%endfor%}

这是我的详细信息功能:

@app.route('/dashboard/details', methods = ['GET', 'POST'])
def details():
    if request.method == 'POST':
        return render_template('details.html')
    return render_template('details.html')

[我想要的是,获取用户在dashboard()函数中填写的表单数据,并在details()函数中使用该数据将信息传递给details.html页面,在该页面上将打印数据用户填写的内容以及存储在数据库中的图书数据。但是我不知道该怎么做。我尝试使用global form = SearchForm()将表单设置为全局形式,但这给了我一个语法错误:

global form = SearchForm()
                ^
SyntaxError: invalid syntax

任何帮助将不胜感激。

html database flask flask-sqlalchemy flask-wtforms
1个回答
0
投票

您可以将参数传递给'url_for'函数,也称为url参数,通常使用ID。例如:

{{ url_for('details', book_id=res.id) }}

因此,您将能够获得传递的参数,例如:

@app.route('/dashboard/details/<int:book_id>')
def details(book_id):

但是,如果您的标题是唯一的,并且您使用它们查询数据,那么您也可以完全将它们用作参数。

© www.soinside.com 2019 - 2024. All rights reserved.