파이썬에서 제공하는 기능인 Decorator : 함수의 앞뒤에 붙여서 함수를 꾸며준다.


여기서 get과 post내용이 반복됨. 데코레이터를 이용해서 간소화할 예정

return HttpResponseRedirect(reverse('accountapp:login'))
삭제
@login_required 붙여주기(장고에서 미리 제공)
@login_required
def hello_world(request):
~~~
본인인증 부분 삭제

@method_decorator()
class안에 있는 함수이므로 위처럼 그래도 한다고 작동하지 않음.
일반 function에서 사용하는 데코레이터를 method에 사용하게 해줌.
첫번째 인자 : login_required 를 타고 우리가 적용할 method('get')을 적어줌

자격인증 부분 만들기
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

has_ownership=[account_ownership_required, login_required()]
method_decorator 수정
@method_decorator(has_ownership,'get')
@method_decorator(has_ownership,'post')