Flask - 获取单击的链接信息并在呈现的页面上显示

时间:2018-05-19 14:04:01

标签: python flask hyperlink

如何将点击链接的文本转换为app.route功能?

例如:说我有一个显示的链接列表,所有链接都链接到同一个网址但每个都加载不同的内容。

<li><a href="/animals">cat</a></li>
<li><a href="/animals">dog</a></li>
<li><a href="/animals">dragon</a></li>

当我点击'cat'时,我需要检索“cat”这个词以及/ animals

的渲染模板
@app.route('/animals', methods=['GET', 'POST'])
def animals():
    selected_animal = get_clicked_animal_name_from_previous_page()
    return render_template(animals.html', title='Animal Details', animal=selected_animal)

是否可以使用get_clicked_animal_name_from_previous_page()这样的函数?

2 个答案:

答案 0 :(得分:2)

您可以通过 request.args 传递参数:

<li><a href="{{url_for('animals', type='cat')}}">cat</a></li>
<li><a href="{{url_for('animals', type='dog')}}">dog</a></li>
<li><a href="{{url_for('animals', type='dragon')}}">dragon</a></li>

接受它:

@app.route('/animals', methods=['GET', 'POST'])
def animals():
    selected_animal = request.args.get('type')
    print(selected_animal) # <-- should print 'cat', 'dog', or 'dragon'
    return render_template(animals.html, title='Animal Details', animal=selected_animal)

答案 1 :(得分:1)

您可以稍微更改每个href的{​​{1}},以重定向到animal路由。这样,animals/<animal>将被传递给稍后要使用的路由函数:

<animal_type>

然后,在应用程序中:

<li><a href="/animals/cat">cat</a></li>
<li><a href="/animals/dog">dog</a></li>
<li><a href="/animals/dragon">dragon</a></li>