Decorator를 이용한 코드 간소화
저번 강의에서 구현 했던 인증 시스템을 더 간단하게 구현해보자.
우선 def hello_world(request)에서 user를 확인했었던 if request.user.is_authenticated: 삭제해주고 @login_required를 추가해준다.
@login_required는 로그인이 되었는지 확인해주는 decorator이다.
그리고 자신의 정보만 수정 및 삭제가 가능하도록 해주는 코드를 작성할건데,
decorators.py 파일을 만드로 해당 파일에 아래 코드를 추가해준다.
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
그리고 AccountUpdateView와 AccountDeleteView에 user가 자신의 정보만 update, delete를 할수 있도록,
class AccountUpdateView(UpdateView): 와 class AccountDeleteView(DeleteView):위에
@method_decorator(login_required, 'get')
@method_decorator(login_required, 'post')
@method_decorator(account_ownership_required, 'get')
@method_decorator(account_ownership_required, 'post')
4줄의 코드를 추가해준다.
각각 get, post에 대해 로그인이 되었을때 그리고 자신의 정보만 수정, 삭제가 가능 하도록 해준다.
superuser, media 관련 설정
superuser
admin 페이지에 접속하면 다음과 같이 admin계정이 필요하다고 나온다.

python manage.py createsuperuser 명령어를 통해 superuser를 만들고 로그인을 해보자.


다음과 같이 계정을 지울수도있다.

삭제가 잘 되는것을 확인할 수 있다.
media
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
settings.py에 media 주소 설정을 해준다.
다음 수업들을 위해 필요한 이미지 관련 라이브러리인 pillow를 다운로드 해준다.
pip install pillow
'기타 > django' 카테고리의 다른 글
작정하고 장고 - profile 마무리 (0) | 2023.05.24 |
---|---|
작정하고 장고 - profile 구현 (0) | 2023.05.20 |
작정하고 장고 - Authentication 인증시스템 구축 (0) | 2023.05.15 |
작정하고 장고 - UpdateView, DeleteView (0) | 2023.05.13 |
작정하고 장고 - DetailView를 활용한 개인 페이지 구현 (0) | 2023.05.11 |
댓글