烧瓶表格未提交

时间:2017-05-26 03:26:40

标签: python forms flask

我正在学习Flask并尝试构建一个非常简单的应用程序,其中很少有部分创建新用户并搜索现有用户。创建/注册新用户部分工作正常,但由于某种原因搜索功能未按预期工作,因为表单未提交。我试图查看我想到的每一个可能的情况,搜索Stackoverflow但是无法修复它。

注册功能代码:

forms.py

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, length

class Register(FlaskForm):
    name = StringField('name', validators=[DataRequired(), length(min=1, max=30)])
    email = StringField('email', validators=[DataRequired()])
    submit = SubmitField('Register')

class UserSeacrh(FlaskForm):
    name = StringField('name', validators=[DataRequired()])
    email = StringField('email', validators=[DataRequired()])
    submit = SubmitField('Search')

views.py

@app.route("/register", methods=['GET', 'POST'])
def register():
    form = Register()
    if form.validate_on_submit():
        db.create_all()
        user = CreateUser(form.name.data, form.email.data)
        db.session.add(user)
        db.session.commit()
        flash('User {} created successfully'.format(form.name.data))
        return redirect(url_for("register"))
    return render_template("register.html", form=form, title='New User Registration')


@app.route("/search", methods=['GET', 'POST'])
def user_profile():
    form = UserSeacrh()
    if form.validate_on_submit():
        flash('{}'.format(user))
        return redirect(url_for("home"))
        #return render_template("users.html", users=user)
    return render_template("userSearch.html", form=form)

register.html

<!DOCTYPE html>

{% extends "base.html" %}

{% block body %}
    <form action="" method="post">
         {{ form.hidden_tag() }}
        <div>
            <h4>User Registeration</h4>
            <span>Name {{form.name}}</span>
             <span style="color: red">
                {% for error in form.name.errors %}
                    {{error}}
                {% endfor %}
            </span
            <span>Email {{form.email}}</span>
            <span style="color: red">
                {% for error in form.email.errors %}
                    {{error}}
                {% endfor %}
            </span>

        </div>
        {{form.submit()}}
    </form>

    {% with messages = get_flashed_messages() %}
        {% if messages %}
        <br/>
        <ul>
            {% for message in messages %}
                <li>{{message}}</li>
            {% endfor %}
        </ul>
        {% endif %}
    {% endwith %}
{% endblock %}

userSearch.html

<!DOCTYPE html>

{% extends "base.html" %}

{% block body %}

    <form action="" method="post">
         {{ form.hidden_tag() }}
         <h4>User Search Form</h4>
        <div>
            <span>Email {{form.email}}</span>

            <span style="color: red">
                {% for error in form.email.errors %}
                    {{error}}
                {% endfor %}
            </span>
        </div>
        {{form.submit()}}
    </form>

    {% with messages = get_flashed_messages() %}
        {% if messages %}
        <br/>
        <ul>
            {% for message in messages %}
                <li>{{message}}</li>
            {% endfor %}
        </ul>
        {% endif %}
    {% endwith %}

{% endblock %}

我现在很无能,有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:3)

最有可能的原因是userSearch.html中没有添加名称字段。在UserSeacrh类中,字段name有一个验证程序DataRequired,最有可能产生问题。如果您只想通过电子邮件进行搜索,只需删除name课程中的UserSeacrh字段。

顺便提一下UserSeacrh中的拼写错误 - 它应该是UserSearch。但在你的情况下,这不是问题。

答案 1 :(得分:0)

我认为您需要为表单指定操作,即将完成的表单POST到哪个URL。

<form action="" method="post">

答案 2 :(得分:0)

我能够用Nurzhan&#39;解决这个问题。通过从forms.py中删除UserSearch表单中的名称字段来提示。