컴굥일지
[Django Study 09] Authentication 인증시스템 구현과 Decorator 본문
반응형
[Authentication 인증시스템 구축 with Decorator]
- Decorator를 쓰지 않고 인증시스템을 구축하면 중복되는 코드가 많아진다.
- Decorator는 함수의 내용을 고치지는 않지만, 앞뒤로 붙어서 꾸며준다.(중복 제거 가능)
- 그냥 함수에는 @login_required라고 쓰면 되지만, 메서드(class안의 함수)에는 적용할 수 없다.
- @method_decorator :일반 함수에 사용하는 decorator를 메서드에 사용할 수 있도록 변환해준다. @method_decorator(login_required, ‘get’) 이런 식으로 사용한다.
커스텀 decorators.py 만들기
#accountapp/decorators.py
from django.contrib.auth.models import User
from django.http import HttpResponseForbidden
#본인인지 확인하는 작업
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
- 이후, views.py에 @method_decorator(account_ownership_required, ‘get’)같이 추가하면 된다.
decorator 모으기
#accountapp/views.py
@method_decorator(login_required, 'get')
@method_decorator(login_required, 'post')
@method_decorator(account_ownership_required, 'get')
@method_decorator(account_ownership_required, 'post')
- 위와 같이 적으면 코드 중복이 많아진다. 아래처럼 바꿀 수 있다.
#accountapp/views.py
has_ownership = [account_ownership_required, login_required]
@method_decorator(has_ownership, 'get')
@method_decorator(has_ownership, 'post')
[superuser, media 관련 설정]
터미널에 python manage.py createsuperuser 라고 치면 관리자 계정을 만들 수 있다.
Image를 다루기 위해서는 추가적인 조치가 필요하다.
settings.py에 아래 코드를 추가한다.
MEDIA_URL = 'media/' #주소 MEDIA_ROOT = os.path.join(BASE_DIR, 'media') #파일 저장 위치
장고에서 이미지 저장할 때 필요한 라이브러리를 설치한다. pip install pillow
[출처] 작정하고 장고! Django Pinterest 따라만들기 : 바닥부터 배포까지
섹션 3. Authentication (27강 ~ 29강)
반응형
'프로그래밍 강의 > Django' 카테고리의 다른 글
[Django Study 11] Articleapp Implementation (0) | 2022.04.26 |
---|---|
[Django Study 10] Profileapp Implementation (0) | 2022.04.25 |
[Django Study 08] DetailView, UpdateView, DeleteView 를 통한 accoutapp 구현 (0) | 2022.04.20 |
[Django Study 07] Login / Logout 구현 및 Bootstrap을 통한 디자인 (0) | 2022.04.19 |
[Django Study 06] Django CRUD 및 CreateView (0) | 2022.04.18 |
Comments