我正在尝试登录烧瓶,但request.form正在提供任何数据

时间:2014-12-11 08:02:59

标签: flask

我正在尝试在烧瓶中创建简单的登录,但我没有在黑暗中获取数据

我的HTML看起来像

{% extends "layouts/home.html" %}
{% block body %}
{% block css %}
        <link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/v2/login.css') }}">
{% endblock %}
<div class="container">
    <div class="row">
        <div class="col-sm-6 col-md-4 col-md-offset-4">
            <div class="account-wall">
                <img class="profile-img" src="https://lh5.googleusercontent.com/-b0-k99FZlyE/AAAAAAAAAAI/AAAAAAAAAAA/eu7opA4byxI/photo.jpg?sz=120"
                    alt="">
                <form role="form" class="form-signin" method="post" enctype="multipart/form-data" action="{{url_for('login_success')}}">
                <input type="text" class="form-control" placeholder="Email" required autofocus>
                <input type="password" class="form-control" placeholder="Password" required>
                <button class="btn btn-lg btn-primary btn-block" type="submit">
                    Sign in</button>
                <label class="checkbox pull-left">
                    <input type="checkbox" value="remember-me">
                    Remember me
                </label>
                </form>
            </div>
        </div>
    </div>
</div>
{% endblock %}

我的烧瓶代码看起来像

@app.route('/login')
def login():
    return render_template('index.html')


@app.route('/login-success', methods=['POST'])
def login_success():
    if request.form:
        print request.form
        return redirect(url_for('login'))
    return redirect(url_for('login'))

但是request.form是none我无法理解可能出现的错误

2 个答案:

答案 0 :(得分:0)

您应该将属性“name”添加到所有字段中,例如:

 <input type="text" name="email" class="form-control" placeholder="Email" required autofocus>

如果您要处理表单,更好的方法是使用Flask-WTF软件包。

另请注意,您已经提出了问题,例如here。对于这些问题,通常有一个stackoverflow的答案,只需查找它。它可以节省您的时间,避免重复使用本网站。

答案 1 :(得分:0)

它不像你没有得到request.form的输出。如果你试图打印request.form然后必须在后端获得不可变字典但它必须是空的,因为每当你试图发布一个然后在表单对象中发送http表单数据。但在你的情况下,你没有给对象的键,所以你得到空字典。如果您给出密钥,那么您将获得输出。

在您的HTML中,您应该写为

<input type="text" name ="email" class="form-control" placeholder="Email" required autofocus>

在后端尝试这样的事情

print request.form['email]