Flask - 将POST请求发送到同一页面中的特定部分

时间:2017-06-12 19:01:41

标签: python html5 post flask

我正在使用flask构建一个简单的网站,其中包含一个页面html index.html和部分:searchaboutcontact。在用户输入

之前,不会显示此部分

我想将POST requestindex.html/#search发送到同一部分:index.html/#search

我试着这样发送:

@app.route('/search', methods=['POST'])
def Search():
    _text = request.form['text']
    return render_template('index.html/#search', result=_text)

但是没有用,我收到了这个错误:

  

jinja2.exceptions.TemplateNotFound:index.html / #search

我尝试将search作为参数传递:

@app.route('/search', methods=['POST'])
def Search():
    _text = request.form['text']
    return render_template('index.html', id="search", result=_text)

但是当我运行它时不起作用,因为当我想转到http://127.0.0.1:5000/search时,我需要index.html(显示http://127.0.0.1:5000/#search页面)。

这是我的 index.html 页面:

<article id="search">
   <h2 class="major">search</h2>
   <form method="post" action="Search">
       <label for="text">Text</label>
       <input type="text" name="text" id="text" placeholder="write any thing in your mind :p" required/>
       <input name="search" type="submit" value="See Polarity" class="special" />
       <input type="reset" value="Reset" />
   </form>

   <!-- result search -->
   {% if result : %}
       <p>{{ result }}</p>
   {% endif %}
</article>

1 个答案:

答案 0 :(得分:1)

#表示现有页面上的锚点,而不是新页面。

同样,您的语法为:

@app.route('/search', methods=['POST'])

会创建一条到http://127.0.0.1:5000/search的新路线。如果您希望它呈现index.html,然后跳转到search锚点,则应该在完成后将其呈现index.html,并包含_anchor属性。它看起来像是:

@app.route('/', methods=['GET','POST'])
def Search():
    if request.method == 'GET'
        return render_template('index.html')
    else:      
        _text = request.form['text']
        return render_template('index.html', _anchor="search", result=_text)