【问题标题】:Flask Form sends all fields in the urlFlask Form 发送 url 中的所有字段
【发布时间】:2021-12-31 13:23:56
【问题描述】:

我的导航栏中有一个搜索字段,如下所示:

     <div class="navbar-nav mr-auto">
          <form class="navbar-form navbar-left" role="search" method="GET"  > 
            {{ barsearchform.hidden_tag() }}
            <div class="input-group">
              {{ barsearchform.query(class="form-control rounded",placeholder="Search articles") }}
              {{ barsearchform.submit(class="btn btn-outline-primary") }}
            </div>
     </form> 

但是当提交时所有的字段都显示在url栏中,甚至是提交按钮,就像这样

  http://localhost:5000/?csrf_token=IjlmMmU0NTg0MmE0N2E1NDBkOGRiOTZlMDk0MjYzNjRjZWI2Njc2YjUi.YZqHoQ.ka3sNHGTCWSQ_GvnOnwr4j86iHA&query=aaaaaaaa&submit=Search

路由处理程序

  @articles.route("/search/")
  def bar_search():
      if request.method == "GET":
          term = request.args.get('query')
          ...
          return render_template(...

我想要的是 http://localhost:5000/?query=aaaaaaaa

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    在 GET 方法中,一切都在 url 中。你有一些选择

    • 在目的地重写网址
    • 将要隐藏的内容作为标题传递(这可能会给您的 CORS 带来问题)
    • 使用 POST 方法并在正文中隐藏内容
    • 您可以将不想发送的东西放在&lt;form&gt; 之外

    【讨论】:

    • 我想使用 GET 的原因是能够共享搜索链接,但其中包含 csrf 令牌,甚至提交按钮似乎都不正确!。我看到的所有搜索和视频仅使用 from 和 get 显示 url 中的查询
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    相关资源
    最近更新 更多