inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

Decorator를 이용한 코드 간소화

커스텀 데코레이터 질문(decorators.py)

286

kiwon Jun

작성한 질문수 2

0

decorators.py 에서 decorator를 커스텀 할 때 

마지막의 return decorated는 정해 decorator 함수를 생성할 때 정해져 있는 규칙인가요??

def account_ownership_required(func):
def decorated(request, *args , **kwargs):
user = User.objects.get(pk=kwargs["pk"])
if not user == request.user:
return HttpResponseForbidden()
return func(request, *args, **kwargs)
return decorated

장고 django 작정하고장고 docker python

답변 1

1

Hyong Sok Park

안녕하세요!
질문 확인했습니다.

마지막 코드에 나와있는 return 문은 따로 정해진 규칙은 아닙니다.
그저 함수 내에 지정한 decorated 함수 자체를 리턴하는 방식입니다.

저희가 강좌에서 decorator ,
그러니까 적용하고자 하는 메서드 혹은 함수 선언 위에 @decorator 와 같은 형식으로 사용했지만,
결국 저희가 작성한 데코레이터는 그냥 함수입니다.

엄밀하게 말하면 하나의 함수를 받아서,
해당 함수를 감싼 새로운 함수를 되돌려 주는 함수가 
Decorator 라고 생각하시면 됩니다.

실제로 함수이기 때문에 꼭 @ 와 같은 특수 구문을 사용하지 않고도 함수처럼 사용할 수도 있습니다.

그럼 왜 그냥 함수인데 이런 특이한 방식으로 사용하냐?라고 물을 수 있겠죠.

그 이유는 코드의 가독성을 높이기 위한 하나의 방법이라고 생각해주시면 좋을 것 같습니다.

 

강좌 들어주셔서 감사하고
좋은하루 보내시길 진심으로 바라겠습니다!
감사합니다-

강의에 나왔던 js 파일이 깃허브에 없습니다

1

69

1

모바일 디버깅, 반응형 레이아웃 4분48초 질문

0

48

1

decorator 관련질문입니다.

0

52

1

PasswordChangeView

0

96

2

로그아웃뷰 작동 관련 (2025년 3월)

1

130

1

실행에러질문

0

149

1

@login_required 데코레이터 사용시 리다이렉트는 어디서 참조하여 설정을 하는걸까요?

0

112

1

CacheBackend 관련 에러

0

173

1

21강 CreateView를 통한 회원가입 구현 질문

0

323

1

53강 disallowedhost

0

338

2

502 Bad Gateway

0

471

0

mariadb 접근권한 오류

0

536

1

logout 후 빈 화면으로 이동합니다 ㅠㅠ

0

453

2

로그아웃 후 빈 화면으로 이동

0

325

1

서버 운영 관련 질문 드립니다.(Unable to retirve...)

0

231

1

static/base.css파일을 인식을 못합니다

0

375

1

안녕하세요 19강 디버깅 설정 질문있습니다.

0

289

1

프로필 update편 질문있습니다.

0

375

1

수업질문

0

390

1

COOP error

0

525

1

61강 Dockerfile error

0

594

1

static안에 base.css 에서 정의한 클래스가 적용되지 않습니다.

0

488

1

static 파일 중 jpg 파일만 로드 불가

0

415

1

58강 static 파일 적용 안됨

0

543

1