본문 바로가기

WEB

[Flask][Flask-WTF] 유효성 검사

이전 포스팅에 이어서 유효성 검사

Validating Forms

1. vaildator 객체를 추가한다.

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

class MyForm(FlaskForm):
    email = StringField('Email',validators=[DataRequired()])
    password=PasswordField('Password',validators=[DataRequired()])
    submit=SubmitField("Login")

 

유효성 검사에도 필수입력인가, @이 포함되었는가, 특수문자가 포함되었는가 등의 많은 검사들이 있을 것이고 

그중에서 DataRequired()는 필수 입력을 나타낸다.

 

만일 사용자가 입력하지 않으면 오류가 발생된다.

오류가 많을시에는 errors리스트가 생성되고 html로 전달한다.

		<form action="/login" methods="POST">
			{{form.csrf_token}}
			<p>{{form.email.label}} 🍏<br> {{form.email(size=30)}}			
				{% for err in form.email.errors %}
				<span>{{error}}</span>
				{% endfor %}
			</p>

			<p>{{form.password.label}} 🍎<br> {{form.password(size=30)}}
				{% for err in form.password.errors %}
				<span>{{error}}</span>
				{% endfor %}
			</p>
			{{form.submit}}

 

2. @이 포함된 유효 이메일과 비밀번호 길이 검사

이메일 검사를 하기위해서 email-validator패키지를 설치하래서 서했는데 

비밀번호길이 검사는 잘되는데 이메일에 @이 있는지 없는지 검사는 왜 안될까?

흠,,

class MyForm(FlaskForm):
    email = StringField('Email',validators=[DataRequired(),Email()])
    password=PasswordField('Password',validators=[DataRequired(),Length(min=8)])
    submit=SubmitField("Login")