【问题标题】:Flask - Get clicked link info and display on rendered pageFlask - 获取点击的链接信息并显示在渲染页面上
【发布时间】:2018-05-19 22:15:00
【问题描述】:

如何将点击链接的文本获取到 app.route 函数中?

例如:假设我有一个链接列表,所有这些链接都指向相同的 url,但每个链接加载不同的内容。

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

当我点击“猫”时,我需要检索“猫”这个词以及 /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() 这样的函数是否可行?

【问题讨论】:

    标签: python flask hyperlink


    【解决方案1】:

    您可以像这样通过 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)
    

    【讨论】:

    • 完美。正是我想要的
    【解决方案2】:

    您可以为每个animal 稍微更改href 以重定向到animals/&lt;animal&gt; 路由。这样,&lt;animal_type&gt; 就会被传递给路由函数以供以后使用:

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

    然后,在应用程序中:

    @app.route('/animals/<animal>', methods=['GET'])
    def animals(animal):
      return render_template('animals.html', title='Animal Details', animal=animal)
    

    【讨论】:

    • 感谢您的意见。但是我需要 URL 保持 /animals,只有内容发生了变化。此问题的选定答案效果很好。
    猜你喜欢
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    相关资源
    最近更新 更多