3-4 Flask 의 유효성 검증과 세션 관리(secret,flash,email-validator,flask-mail) with 파머

2025. 4. 23. 21:49·특강
목차
  1. 1. 🛠️ Flask 의 유효성 검증과 세션 관리
  2. 2. 🛠️ 이메일 유효성 검증 라이브러리 설치 및 사용
  3. 2.1. ️ 라이브러리 설치 및 활용 안내
  4. 3. 🚀 이메일 유효성 검증 및 오류 처리
  5. 4. 📚 첫 회사의 중요성과 코드 최적화
  6. 5. 📧 Flask로 이메일 기능 구현하기
  7. 5.7. Flask 메일 서버 설정 및 환경 변수 관리
  8. 5.9. ️ 이메일 전송 함수 생성 과정
  9. 결론

1. 🛠️ Flask 의 유효성 검증과 세션 관리

flash 메시지 기능을 통한 유효성 검증 구현

플라스크에서는 사용자가 필수 입력 항목을 입력하지 않으면 플래시 메시지를 띄워 사용자에게 경고할 수 있습니다.

from flask import Flask, request, flash, render_template, redirect, url_for

app = Flask(__name__)
app.secret_key = 'your_secret_key'

@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if request.method == 'POST':
        name = request.form.get('name')
        email = request.form.get('email')
        
        if not name:
            flash('사용자 명은 필수로 입력해 주세요.')
        if not email:
            flash('이메일을 필수로 입력해 주세요.')

        # 모든 필드가 올바르게 입력되었다면
        if name and email:
            flash('문의해 주셔서 감사합니다.')
            return redirect(url_for('contact'))

    return render_template('contact.html')
  • 설명:
    • 사용자가 "이름"이나 "이메일"을 입력하지 않았을 경우, flash() 함수를 사용해 경고 메시지를 띄운다.
    • 유효성 검사를 통과한 경우, "문의해 주셔서 감사합니다."라는 메시지를 띄운 후 페이지를 리디렉션한다.

2. 🛠️ 이메일 유효성 검증 라이브러리 설치 및 사용

이메일 유효성 검증을 위한 라이브러리 사용

이메일 유효성 검증을 위해 email-validator 라이브러리를 설치하고, 이를 사용하여 이메일이 올바른지 확인합니다.

pip install email-validator
from email_validator import validate_email, EmailNotValidError

@app.route('/contact', methods=['POST'])
def contact_post():
    email = request.form['email']
    
    try:
        # 이메일 유효성 검증
        validate_email(email)
        flash('유효한 이메일입니다.')
    except EmailNotValidError as e:
        flash(f'잘못된 이메일 형식입니다: {e}')
    
    return redirect(url_for('contact'))
  • 설명:
    • validate_email() 함수를 사용해 이메일의 형식을 검증한다.
    • 이메일 형식이 올바르지 않으면 EmailNotValidError 예외가 발생하며, 이를 플래시 메시지로 사용자에게 알려준다.

2.1. ️ 라이브러리 설치 및 활용 안내

위에서 설명한 대로, 이메일 유효성 검증을 위한 라이브러리를 설치하고, 이 라이브러리의 validate_email()을 활용하여 이메일을 검사한다. 이를 통해 사용자가 입력한 이메일이 올바른 형식인지 쉽게 확인할 수 있다.


3. 🚀 이메일 유효성 검증 및 오류 처리

try-except로 이메일 오류 처리

이메일이 유효하지 않은 경우 try-except 구문을 사용하여 오류를 처리하고, 잘못된 이메일을 입력한 사용자에게 플래시 메시지로 알려준다.

from email_validator import validate_email, EmailNotValidError

@app.route('/contact', methods=['POST'])
def contact_post():
    email = request.form['email']
    
    try:
        # 이메일 유효성 검증
        validate_email(email)
        flash('유효한 이메일입니다.')
    except EmailNotValidError as e:
        flash(f'잘못된 이메일 형식입니다: {e}')
        return redirect(url_for('contact'))
    
    return redirect(url_for('contact_complete'))
  • 설명:
    • try-except 구문을 사용하여 이메일 유효성 검사를 처리하고, 유효하지 않으면 오류 메시지를 출력한다.

4. 📚 첫 회사의 중요성과 코드 최적화

첫 회사 선택과 관련된 코드

첫 회사에서의 경험은 경력에 큰 영향을 미친다. 코드 최적화는 특정 도메인에 맞춰 효율적으로 작성되어야 한다.

def optimize_code_for_domain(domain):
    if domain == 'fintech':
        return "핀테크에 최적화된 코드로 수정"
    elif domain == 'ecommerce':
        return "이커머스에 최적화된 코드로 수정"
    else:
        return "기본 코드"
  • 설명:
    • 도메인에 맞춰 최적화된 코드를 작성해야 한다는 점을 강조하는 간단한 함수 예시.
    • 각 도메인에 맞는 최적화 방법을 구현하여 경력을 쌓아갈 수 있다.

5. 📧 Flask로 이메일 기능 구현하기

이메일 전송 기능 구현

Flask의 메일 전송 기능을 설정하여 이메일을 발송할 수 있다. 이 과정에서 SMTP 서버와 인증 비밀번호를 설정하여 실제 이메일을 발송한다.

pip install flask-mail
from flask_mail import Mail, Message

# Flask 앱 및 메일 객체 설정
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 587
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = 'your_email@gmail.com'
app.config['MAIL_PASSWORD'] = 'your_app_password'

mail = Mail(app)

@app.route('/send_email')
def send_email():
    msg = Message('Hello', sender='your_email@gmail.com', recipients=['recipient_email@gmail.com'])
    msg.body = 'This is the email body.'
    mail.send(msg)
    return 'Email sent successfully!'
  • 설명:
    • flask-mail 라이브러리를 사용하여 이메일을 보내는 기능을 구현한다.
    • Gmail SMTP 서버를 설정하고, 이메일을 발송한다.

5.7. Flask 메일 서버 설정 및 환경 변수 관리

환경 변수와 비밀번호 관리

민감한 정보를 코드에 직접 작성하지 않고, .env 파일을 사용하여 환경 변수를 관리한다.

# .env 파일 예시
MAIL_SERVER=smtp.gmail.com
MAIL_PORT=587
MAIL_USE_TLS=True
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
from dotenv import load_dotenv
import os

# 환경 변수 로드
load_dotenv()

app.config['MAIL_SERVER'] = os.getenv('MAIL_SERVER')
app.config['MAIL_PORT'] = os.getenv('MAIL_PORT')
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.getenv('MAIL_PASSWORD')
  • 설명:
    • .env 파일을 사용해 민감한 정보를 안전하게 저장하고, 이를 코드에서 환경 변수로 가져와 사용한다.
    • load_dotenv() 함수로 .env 파일을 로드하여 환경 변수를 관리한다.

5.9. ️ 이메일 전송 함수 생성 과정

이메일 전송 함수 작성

이메일을 전송하는 함수를 작성하고, 이를 호출하여 이메일을 발송한다.

def send_email(to, subject, template, **kwargs):
    msg = Message(subject, recipients=[to])
    msg.body = render_template(template + '.txt', **kwargs)
    msg.html = render_template(template + '.html', **kwargs)
    mail.send(msg)
  • 설명:
    • send_email 함수는 수신자, 제목, 템플릿 파일 등을 매개변수로 받아 이메일을 발송한다.
    • 템플릿 파일은 HTML과 TXT 형식으로 보내지며, 수신자가 지원하는 형식에 맞춰 발송된다.

결론

위 코드들은 플라스크에서 유효성 검증, 이메일 전송, 세션 관리 등을 구현하는 데 필요한 기본적인 예시들을 포함하고 있습니다. 각 코드의 흐름을 이해하고, 이를 실제 프로젝트에 맞게 커스터마이즈하여 사용하면 됩니다. 추가적으로 플래시 메시지나 세션 관리를 통해 사용자 경험을 향상시킬 수 있습니다.

'특강' 카테고리의 다른 글

[Django 1일차] 웹 서비스와 Django의 관계 2/4 (250512)  (0) 2025.05.12
[Django 1일차] 웹사이트 구조부터 추상화까지 완전 정리 1/4 (250512)  (0) 2025.05.12
3-3 Flask 웹 애플리케이션에서 for 문 활용하기 with 파머  (0) 2025.04.23
3-2 1인 개발과 사업의 가능성 사이드프로젝트 활용 with 파머  (0) 2025.04.23
3-1 개발과 개발자로서 성장하는 법 with 파머  (0) 2025.04.23
  1. 1. 🛠️ Flask 의 유효성 검증과 세션 관리
  2. 2. 🛠️ 이메일 유효성 검증 라이브러리 설치 및 사용
  3. 2.1. ️ 라이브러리 설치 및 활용 안내
  4. 3. 🚀 이메일 유효성 검증 및 오류 처리
  5. 4. 📚 첫 회사의 중요성과 코드 최적화
  6. 5. 📧 Flask로 이메일 기능 구현하기
  7. 5.7. Flask 메일 서버 설정 및 환경 변수 관리
  8. 5.9. ️ 이메일 전송 함수 생성 과정
  9. 결론
'특강' 카테고리의 다른 글
  • [Django 1일차] 웹 서비스와 Django의 관계 2/4 (250512)
  • [Django 1일차] 웹사이트 구조부터 추상화까지 완전 정리 1/4 (250512)
  • 3-3 Flask 웹 애플리케이션에서 for 문 활용하기 with 파머
  • 3-2 1인 개발과 사업의 가능성 사이드프로젝트 활용 with 파머
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
찬스맨의 프로그래밍 스토리안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (657) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11) N
      • 특강 (34) N
      • 기술블로그 (36) N
      • 기술블로그-Fastapi편 (20) N
      • 기술블로그-Django편 (152) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (72)
      • Fastapi (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
3-4 Flask 의 유효성 검증과 세션 관리(secret,flash,email-validator,flask-mail) with 파머

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.