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
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    RM
    smartphonedurability
    remittance
    bts
    homebartrend
    titaniumcase
    hotcoffeecase
    btscomeback
    btsdischarge
    newpoliticalparty
    youngprofessionals
    lawsuitculture
    travel ban
    college reunions
    trumpmuskclash
    btsjungkook
    chatgpterror
    btsreunion
    gpterror
    livebroadcast
    americaparty
    classaction
    urbantrends
    americanlaw
    self-growth
    chinanightlife
    뷔
    global politics
    basalcellcarcinoma
    life reflection
  • 최근 댓글

  • 최근 글

  • 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 + /
⇧ + /

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