[python] Flask-WTF에서 사용자가 입력한 값에 대한 중복 확인을 어떻게 할 수 있나요?

Flask-WTF는 Flask를 위한 강력한 폼 처리 확장 라이브러리입니다. 사용자가 입력한 값에 대한 중복 여부를 확인하기 위해서는 몇 가지 단계를 따라야 합니다.

  1. 필드 유효성 검사 Flask-WTF는 필드 유효성 검사를 위한 다양한 유효성 검사기(validation)를 제공합니다. 중복 확인을 위해서는 validators 모듈에서 제공하는 Optional()DataRequired() 외에도 다른 유효성 검사기를 사용해야 합니다.

  2. 중복 확인 기능 추가하기 중복 확인을 위한 코드는 폼 클래스의 메서드나 컨트롤러의 액션 메서드에서 처리할 수 있습니다. 예를 들어, 사용자가 이메일 주소를 입력하는 폼이 있다고 가정해봅시다. 중복된 이메일을 확인하기 위해 데이터베이스에 쿼리를 실행해야 합니다.

    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    from wtforms.validators import DataRequired, Email
    from yourapp.models import User
    
    class RegistrationForm(FlaskForm):
        email = StringField('Email', validators=[DataRequired(), Email()])
        submit = SubmitField('Register')
    
        def validate_email(self, email):
            user = User.query.filter_by(email=email.data).first()
            if user:
                raise ValidationError('이미 등록된 이메일입니다. 다른 이메일을 사용해주세요.')
    

    위의 예제에서는 validate_email 메서드를 사용하여 이메일의 중복 여부를 확인합니다. validate_ 프리픽스를 사용하는 특별한 메서드를 정의해야 합니다. 이 메서드는 필드의 이름을 인수로 받아 필드의 유효성 검사를 진행합니다.

  3. 중복 확인 에러 메시지 처리하기 중복된 값을 입력할 경우, 웹 어플리케이션에서 에러 메시지를 표시할 필요가 있습니다. 이를 위해 템플릿 파일에서 에러 메시지를 표시할 수 있도록 설정해야 합니다. 템플릿 파일의 예는 다음과 같습니다.

       
    <form method="post">
        {{ form.hidden_tag() }}
        <div class="form-group">
            {{ form.email.label }} {{ form.email() }}
            {% for error in form.email.errors %}
                <span class="error">{{ error }}</span>
            {% endfor %}
        </div>
        <div class="form-group">
            {{ form.submit() }}
        </div>
    </form>
       
    

    위의 예에서는 form.email.errors를 사용하여 이메일 필드의 에러 메시지를 표시합니다.

이제 Flask-WTF를 사용하여 사용자의 입력 값에 대한 중복 확인을 구현하는 방법을 알게 되었습니다. 이를 통해 사용자 입력의 유효성을 검사하고 중복된 정보를 방지할 수 있습니다.

참고 문서: