[python] Flask-WTF에서 Ajax를 사용하여 서버로 폼 데이터를 전송하는 방법은 어떻게 되나요?
  1. HTML 폼 생성하기

먼저, HTML 폼을 생성해야 합니다. Flask-WTF를 사용하면 간편하게 폼을 생성할 수 있습니다. 예를 들어, 다음과 같이 HTML 파일에 폼을 작성합니다:


<form id="myForm" method="POST">
  {{ form.hidden_tag() }}
  {{ form.name.label }} {{ form.name() }}<br>
  {{ form.email.label }} {{ form.email() }}<br>
  <input type="submit" value="전송">
</form>

  1. Ajax 요청 보내기

Ajax를 사용하여 폼 데이터를 서버로 전송하려면 JavaScript 코드를 작성해야 합니다. jQuery를 사용하면 아래와 같이 간단하게 Ajax 요청을 보낼 수 있습니다:


$(document).ready(function() {
  $("#myForm").submit(function(event) {
    event.preventDefault();  // 폼이 실제로 제출되는 것을 방지

    $.ajax({
      type: "POST",
      url: "{{ url_for('submit_form') }}",  // Flask 경로 함수 사용
      data: $(this).serialize(),  // 폼 데이터 직렬화
      success: function(response) {
        // 서버로부터의 응답 처리
        console.log(response);
      }
    });
  });
});

  1. 서버에서 폼 데이터 처리하기

Flask 서버에서는 폼 데이터를 처리하기 위해 애플리케이션에 해당하는 라우트를 생성해야 합니다. 다음은 Flask 경로 함수와 라우트 함수의 예입니다:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def submit_form():
    if request.method == 'POST':
        name = request.form.get('name')
        email = request.form.get('email')

        # 폼 데이터 처리 로직 작성

        return '폼 데이터가 성공적으로 전송되었습니다.'

    return render_template('index.html')

if __name__ == '__main__':
    app.run()

이제 위의 코드를 실행하고 웹 브라우저에서 폼을 작성하여 전송해보세요. Ajax를 사용하면 페이지 전체가 새로고침되지 않고 폼 데이터가 서버로 전송됩니다. 서버에서는 해당 데이터를 받아서 원하는 대로 처리할 수 있습니다.

참고 문서: