[python] Flask-WTF에서 폼 요소들을 그릴 때 스타일을 설정하는 방법은 어떻게 되나요?

Flask-WTF는 Flask 웹 프레임워크와 함께 사용되는 WTForms와 결합된 확장 도구입니다. Flask-WTF를 사용하여 폼 요소를 그리면, 기본적으로 Bootstrap 스타일이 적용됩니다. 하지만, 사용자는 이 기본 스타일을 변경하고 자신만의 스타일을 적용할 수 있습니다.

폼 요소들의 스타일을 설정하는 방법은 여러 가지가 있지만, 가장 일반적인 방법은 WTForms에서 제공하는 class 속성을 사용하는 것입니다.

예를 들어, Flask-WTF를 사용하여 LoginForm 클래스로 로그인 폼을 만들었다고 가정해봅시다. 이 폼의 입력 필드에 스타일을 적용하려면 다음과 같이 class 속성을 설정합니다.

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

class LoginForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired()], render_kw={"class": "form-control"})
    password = PasswordField('Password', validators=[DataRequired()], render_kw={"class": "form-control"})

위의 예시에서 render_kw 매개변수를 사용하여 class 속성을 설정하였습니다. 이렇게 설정된 class 속성은 폼 요소의 HTML 출력에 적용됩니다. 위의 코드에서는 Bootstrap의 form-control 클래스를 사용하여 입력 필드에 스타일을 적용하였습니다.

또 다른 방법으로는, 템플릿 파일에서 개별적으로 스타일을 설정하는 것입니다. Flask-WTF는 템플릿 파일에서 폼 요소의 속성을 직접 설정할 수 있는 기능을 제공합니다.

예를 들어, login.html 템플릿 파일에서 LoginForm 폼의 입력 필드에 스타일을 적용하려면 다음과 같이 작성할 수 있습니다.


{% extends "base.html" %}

{% block content %}
  <form method="POST" action="{{ url_for('login') }}">
    {{ form.csrf_token }}
    <div class="form-group">
      {{ form.username.label }}
      {{ form.username(class="form-control") }}
    </div>
    <div class="form-group">
      {{ form.password.label }}
      {{ form.password(class="form-control") }}
    </div>
    <button type="submit" class="btn btn-primary">로그인</button>
  </form>
{% endblock %}

위의 예시에서는 class 속성을 사용하여 입력 필드에 Bootstrap의 form-control 클래스를 적용하였습니다. 또한, 로그인 버튼에도 btn 클래스와 btn-primary 클래스를 적용하여 스타일을 설정하였습니다.

이렇게 Flask-WTF에서 폼 요소들에 스타일을 적용하는 방법에 대해서 알아보았습니다. 이와 같은 방법들을 사용하여 원하는 스타일을 설정할 수 있습니다.