flask无法获取表单提交的值

时间:2016-05-18 09:53:53

标签: python flask

我是新手,我有这样一种形式:

<form class="form" action={{ url_for('/login') }} method="POST">
        <input type="text" name="usename" placeholder="Username">
        <input type="password" name="password" placeholder="Password">
        <button type="submit" id="login-button">Login</button>
</form>

我使用request.form()request.form.get()来获取提交的值,但结果始终相同**&#34; GET / HTTP / 1.1&#34; 200 - **

@app.route('/login',methods=['POST','GET'])
def login():
    name=request.form['usename']
    password=request.form['password']
    form_data=request.form.get('usename')
    print name,password,form_data
    return render_template('login.html')

我尝试访问/login,它显示错误请求。但是当它被修改为这样时,它没问题。它似乎是我的request语句块是不正确的。

@app.route('/login',methods=['POST','GET'])
def login():
    return render_template('login.html')

3 个答案:

答案 0 :(得分:0)

这是因为表单操作改变了

action="{{url_for('index')}}" 

您的表单实际上并未发布,您尝试获取值。并且不要忘记添加名为index的视图函数,或者您可以使用login而不是index

答案 1 :(得分:0)

我猜你是想从login.html文件中获取这些值。如果是这样你必须使用这样的东西

    @app.route('/login',methods = ['GET','POST'])
    def login():
         if request.method =='POST':
              name=request.form['usename']
              password=request.form['password']
              form_data=request.form.get('usename')
              print name,password,form_data
         return render_template('login.html')

答案 2 :(得分:0)

尝试离开动作字段emtpy。

<form class="form" action="" method="POST">

将其留空将发布到下载表单的同一位置,我想这是你的用例。

[1] Is it a good practice to use an empty URL for a HTML form's action attribute? (action="")