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 |