flask wtform里的submitfield()字段不好使?

新手上路,请多包涵

写了表单验证的代码,验证时发现不输入直接按提交按钮表单无法验证??后来我试着在用户名和密码处输入几个空格发现可以验证。检查后发现不输入直接提交是没有以post方式提交,而前端<form>标签已经指明了method='post',提交按钮使用submitfield()做的,那就是submitfield()字段有问题?正常来讲不输入直接提交应该提示用户名不能为空啊?

forms.py

from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, PasswordField, SubmitField, widgets
from wtforms.validators import InputRequired

class Loginform(FlaskForm):
    username = StringField('用户名', validators=[InputRequired(message='用户名不能为空')])
    password = PasswordField('密码', validators=[InputRequired(message="密码要8位")])
    remember_me = BooleanField('记住我')
    **submit = SubmitField('提交')**

routes.py

@app.route('/login',methods=['GET', 'POST'])
def login_validation():
    form = Loginform()
    if request.method == 'post':
        print("ok")#没有打印出来过
        if form.validate_on_submit():
            flash('用户登录的用户名是:{} , 是否记住我:{}'.format(
                form.username.data, form.remember_me.data))
            return redirect('/index')
        else:
            print(form.errors)
            return render_template('login.html',title='登录', form=form)
    else:
        print("提交错误")
        return render_template('login.html', title='登录', form=form)

login.html

{% block content %}
        <h1>登 录</h1>
    <form action="/login" **method="post"**>
        **{{ form.hidden_tag() }}**
        <p>
            {{ form.username.label }}<br>
            {{ form.username(size=32) }}<br>
            {% for error in form.username.errors %}
                <span style="color: red;">[{{ error }}]</span>
            {% endfor %}

        </p>
        <p>
            {{ form.password.label }}<br>
            {{ form.password(size=32) }}<br>
            {% for error in form.password.errors %}
                <span style="color: red;">[{{ error }}]</span>
            {% endfor %}

        </p>
        <p>{{ form.remember_me }} {{ form.remember_me.label }}</p>
        <p>**{{ form.submit() }}**</p>
阅读 3.3k
1 个回答
class Loginform(FlaskForm):
    username = StringField('用户名', validators=[InputRequired(message='用户名不能为空')])
    password = PasswordField('密码', validators=[InputRequired(message="密码要8位")])
    remember_me = BooleanField('记住我')
    **submit = SubmitField('提交')**

这段代码里的 username = StringField('用户名', validators=[InputRequired(message='用户名不能为空')])
明确的告诉你 username 也就是用户名的输入框必须得有字符,不能为空。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题