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

Flask-WTF는 Flask를 위한 강력한 폼 유효성 검사 라이브러리이며, 중복 확인을 위해 unique한 값을 입력하는지 확인할 수 있는 다양한 기능을 제공합니다.

먼저, 데이터베이스에 중복되지 않는 값을 입력해야 한다면, 중복 확인을 위한 고유한 필드를 모델에 추가해야 합니다. 예를 들어, 사용자 이름이 중복되지 않아야 한다면 User 모델에 “username” 필드를 고유한 값으로 설정해야 합니다.

from flask import Flask
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import InputRequired
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'your-database-uri'

db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True)

class UserForm(FlaskForm):
    username = StringField('Username', validators=[InputRequired()])
    submit = SubmitField('Submit')

@app.route('/', methods=['GET', 'POST'])
def register_user():
    form = UserForm()

    if form.validate_on_submit():
        username = form.username.data
        user = User.query.filter_by(username=username).first()
        if user:
            return 'Username already exists!'  # 중복 확인 실패
        else:
            new_user = User(username=username)
            db.session.add(new_user)
            db.session.commit()
            return 'User registered successfully!'  # 중복 확인 성공
    
    return render_template('register.html', form=form)

위의 예제에서는 User 모델을 정의하고, UserForm 폼 클래스를 생성합니다. 유효성 검사에서는 InputRequired를 사용하여 사용자 이름 필드가 비어있지 않은지 확인합니다. register_user 함수에서는 폼이 제출되었을 때 중복된 사용자 이름이 있는지 데이터베이스를 조회하여 확인합니다.

중복 확인 실패 시에는 'Username already exists!'와 같은 에러 메시지를 반환하고, 중복 확인 성공 시에는 'User registered successfully!'와 같은 성공 메시지를 반환합니다.

이제 Flask-WTF를 사용하여 사용자가 입력한 값에 대한 중복 확인을 수행할 수 있는 방법을 알게 되었습니다. 귀하의 애플리케이션에 맞게 코드를 수정하고 적용하여 중복 확인 기능을 구현해 보세요.