Python 单击“提交”按钮

Python 单击“提交”按钮,python,html,twitter-bootstrap,flask,Python,Html,Twitter Bootstrap,Flask,我正在尝试创建一个页面来注册用户,但是我的引导表单中的提交按钮不起作用。当我点击提交按钮时,我得到一个错误的请求。以下是我的python文件中的代码: @app.route('/register', methods=['GET', 'POST']) def register(): if request.method == 'POST': if not request.form['username']: error = 'You have to en

我正在尝试创建一个页面来注册用户,但是我的引导表单中的提交按钮不起作用。当我点击提交按钮时,我得到一个错误的请求。以下是我的python文件中的代码:

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        if not request.form['username']:
            error = 'You have to enter a username'
        elif not request.form['email'] or '@' not in request.form['email']:
            error = 'You have to enter a valid email address'
        elif not request.form['password']:
            error = 'You have to enter a password'
        elif get_user_id(request.form['username']) is not None:
            error = 'The username is already taken'
        else:
            print(request.form['username'])
            db = get_db()
            db.execute('INSERT INTO user (username, email, pw_hash) VALUES (?, ?, ?)',
                       [request.form['username'], request.form['email'],
                        generate_password_hash(request.form['password'])])
            db.commit()
            flash('You were successfully registered and can login now')
            return render_template('control.html')
    return render_template('register.html')
我还有一个html文件register.html:

{% extends 'layout.html' %}
{% block title %}Sign-up{% endblock title %}
{% block body %}
<div class="container">
    <form class="form-register" role="form" method="post" action="{{ url_for('register') }}">
        <h2 class="form-register-heading">Please sign up</h2>
        <label for="username" class="sr-only">Username</label>
        <input type="username" id="inputUsername" class="form-control" value="{{ request.form.username }}" placeholder="Username" required autofocus>
        <label for="email" class="sr-only">Email address</label>
        <input type="email" id="inputEmail" class="form-control" value="{{ request.form.email }}" placeholder="Email address" required autofocus>
        <label for="password" class="sr-only">Password</label>
        <input type="password" id="inputPassword" class="form-control" placeholder="Password" required >
        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
    </form>

</div>
{% endblock body %}
{%extends'layout.html%}
{%block title%}注册{%endblock title%}
{%block body%}
请注册
用户名
电子邮件地址
密码
注册
{%endblock body%}

我找不到哪里做错了,我是python和flask的新手

您的
输入
字段没有
名称
属性。这将导致您的所有检查导致
KeyError
s。第一步是向每个输入添加属性

<input name="username" type="text" id="inputUsername" class="form-control" value="{{ request.form.username }}" placeholder="Username" required autofocus>
但是,如果您还需要一个truty值,那么
get
方法就是您想要的

if not request.form.get('username'):

@app.route('/register/',methods=['GET',POST'])
试试这个,POST请求应该以“/”结尾。我试过这个,但仍然不起作用,谢谢你这么多朋友,你回答的第一步完全解决了我的问题!
if not request.form.get('username'):