@ (데코레이터)
데코레이터를 자주 쓰는 경우 3가지 상황과 예시
Flask나 Django 같은 웹 프레임워크에서
"이 주소로 들어오면 이 함수를 실행해!"라고 연결할 때
@app.route('/message/send') # "이 주소로 오면 아래 함수 실행해!"
def send_msg():
return "전송 완료"
쪽지 보내기, 마이페이지 보기, 글 쓰기 등은 로그인한 사람만 해야 한다. 모든 함수마다 if not login: return "에러" 코드를 넣으면 너무나 성가신 상황이다
"이 함수 실행하기 전에 로그인이 되어 있는지 먼저 검사해줘."
@login_required # "로그인 안 했으면 튕겨내!" (이게 없으면 비회원도 쪽지 보냄)
def send_msg():
# 쪽지 전송 로직
pass
👉 이렇게 @login_required만 붙이면, 로그안 안 한 사람은 아예 send_msg 함수 안에 들어오지도 못하게 막아주는것이다.
실제 기능은 아니지만, 문서 자동화 도구에게 정보를 줄 때
"이 함수가 뭔지 문서에 좀 적어놔."
@api.doc(description="쪽지 전송 기능") # "문서에 이렇게 적어둬"
def post(self):
pass
연결할 때: 함수와 URL 주소를 연결할 때 (@route)
검사할 때: 로그인했는지, 관리자인지 권한을 체크할 때 (@login_required)
설명할 때: API 문서에 부가 정보를 남길 때 (@doc)