Flask未检测到来自表单

时间:2017-09-16 19:21:23

标签: python forms post flask jinja2

我希望在点击“登录”按钮时将POST请求发送到我的main.py文件。但是,正如代码当前所示,python文件没有检测到已从login.html文件的表单发送了POST请求。单击按钮时,没有任何反应。如果POST请求被发送到/ login,我设置了print("post")行,但它没有打印任何内容(我已检查过我的打印功能是否正常工作并正确打印)

这是我的login.html文件的一部分:
(我不相信任何剩下的都是必要的,但如果是,请告诉我)

    <div class="container">
        <form method="post">
            <input placeholder="Username" type="text" class="validate" value="{{ request.form.username }}">
            <input placeholder="Password" type="password" class="validate" value="{{ request.form.password }}">
            <a type="submit" value=submit class="btn waves-effect waves-teal">Login</a>
        </form>
    </div>

这是我的main.py文件的一部分:
(我不相信任何剩下的都是必要的,但如果是,请告诉我)

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
    print( "post" )
    if ( request.form.get( 'username', None ) != None ) and ( request.form.get( 'password', None ) != None ):
        if request.form[ 'username' ] == "funky" and request.form[ 'password' ] == "passw":
            session[ 'loggedIn' ] = True
            session[ 'username' ] = request.form[ 'username' ]
            dictUser[ request.form[ 'username' ] ] = user( "blue" )
            print( "hi" )

if session.get( 'loggedIn', False ):
    return redirect( url_for( "index" ) )
else:
    return render_template( "login.html" )

请注意&#34;时髦&#34;和&#34; passw&#34;值只是在我测试时并且没有端口转发。一旦我解决了这个问题(并设置了数据库等),我会正确检查用户名和密码是否正确。

提前:我已查看是否有其他帖子可以回答我的问题,但我找不到任何帖子。如果有,请指出他们,我为浪费你的时间而道歉

更新
好的,尝试将<a type="submit" value=submit class="btn waves-effect waves-teal">Login</a>更改为<input>,现在python文件识别出已发送POST请求。但是,在运行request.form.get( "username", None )时会返回None

更新II
已在name=usernamename=password中添加到各自的输入中,这解决了我无法访问request.form.get( stuff )的值的次要问题

2 个答案:

答案 0 :(得分:0)

向表单添加操作。见下文。

<form method="post" name="login" action="{{ url_for('login') }}">
    <input placeholder="Username" type="text" class="validate" value="{{ request.form.username }}">
    <input placeholder="Password" type="password" class="validate" value="{{ request.form.password }}">
    <a type="submit" value=submit class="btn waves-effect waves-teal">Login</a>
</form>

答案 1 :(得分:0)

更新
好的,尝试将<a type="submit" value=submit class="btn waves-effect waves-teal">Login</a>更改为<input>,现在python文件识别出已发送POST请求。但是,在运行request.form.get( "username", None )时会返回None

更新II
已在name=usernamename=password中添加到各自的输入中,这解决了我无法访问request.form.get( stuff )的值的次要问题