Flask Form not submitting

Viewed 8808

I am learning Flask and trying build a very simple app which has few parts creating new users and searching the existing users. The create/register new users part is working just fine, but for some reason the search function is not working as expected because the form is not getting submitted. I have tried to look every possible case which I think of, searched Stackoverflow as well but could not get to fix it.

The code for registration functionality:

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 %}

I am clueless now, can someone please help me out here?

3 Answers
Related