Flask请求显示400错误请求并重定向到'/'而不是'/ someURL'

时间:2016-06-20 09:29:23

标签: python html http flask request

我正在创建一个应用程序来从 index.html 获取信息(某种登录),然后重定向到第二个html页面 capture_simple.html 。但是在从第二页发送发布请求时,服务器显示错误400,然后重定向回'/'('/'是显示错误的位置),而不是保留在'/ captureSimple'。

这是我的烧瓶代码:

#imports
#app declaration
#__name__ stuff
@app.route('/')
def my_form():
    return render_template("index.html")

@app.route('/', methods=['POST'])
def my_form_post():
    global processed_text
    text = request.form['text']
    processed_text = text.upper()
    make_a_dir(processed_text)
    #sends data for foldername to make_a_dir()
    return redirect(url_for('captureSimpleFunc'))




#captureSimple : to displey simple image    
@app.route('/captureSimple', methods=['GET','POST'])
def captureSimpleFunc():
    if request.method=='GET':
        return render_template('capture_simple.html')
    if request.method == 'POST':
        xtr=request.form['flip']
        print(xtr)
        #some statements
        return xtr

所以我的模板文件夹中有两个html页面。在页面 index.html 这个HTML页面不会造成任何麻烦。无论如何,我正在放置代码。

    <body>
    <div id="container_1">
    <h1 class="all" id="head_name">OWL </h1>
    <h2 class="all" id="head_instru">Enter MR number</h2>
    <form class="all" action="." method="POST">

    </div><!-- 
        <input id="keyboard" type="text" class="ui-keyboard-input ui-widget-content ui-corner-all" aria-haspopup="true" role="textbox" >
        <input id="keyboard" type="text" > <br><br> -->
        <div id="wrap"> <!-- wrapper only needed to center the input -->

        <!-- keyboard input -->
        <input id="keyboard" type="text" name="text"><br><br>
        <input class="all" id="button_" type="submit" name="my-form" value="Send">
    </div> <!-- End wrapper -->

    </form>
    </div>
</body>

然后是第二个 capture_simple.html 页面。这就是真正的麻烦所在。

<body>
    <form method="POST" action=".">
    <input type="submit" name="flip">
    </form> 
</body>

[我删除了上面不必要的代码]

我的应用将我重定向到第二页,但是在按下表单中的翻转按钮时,它会创建所有错误请求错误400

终端显示如下内容:

  

“POST / HTTP / 1.1”400 -

1 个答案:

答案 0 :(得分:0)

所以,我正在回答我自己的问题。

我遇到的问题是

action="."

在我的 capture_simple.html 文件中,因此它将请求发送到'/'根目录并造成所有麻烦。

只需从表单中删除action属性即可。