그 동안의 부단한 노력으로 실력이 많이 늘었다. 이제 이거 끝내고 AWS배포를 배운 후, Djago API를 사용한 React Native 앱을 만들어보자.
# 23 Room update
- 수정 화면 접근 보안성 강화하기
1) 버튼 숨기기 with 조건문
{% if room.host == user %}
<a href="{% url 'rooms:edit' room.pk %}" class="btn-link block">Edit room</a>
{% endif %}
ui상에서는 막아지는데 url로 접근하는 똑똑이들을 막을 수 없다.
2) 해당 view에 get_object 추가한 뒤, Http404 raise하기
def get_object(self, queryset=None):
room = super().get_object(queryset=queryset)
if room.host.pk != self.request.user.pk:
raise Http404
return room
get_object는 update_view의 메소드인데 (room_edit을 담당하는 view클래스에 상속시켰음)
display에서 보여주는 objects를 return한다.
해당 오브젝트(room)의 호스트와 접근한 유저의 pk값이 다르다면
Http404 에러를 raise하는 방식으로 처리했다. ( from django.http.response import http404 )
니꼬쌤은 "여기 있으면 안됩니다"등의 메시지를 띄우기보다는 걍 날려버리라고 한다 ㅋㅋㅋ
- 로그인 여부 파악하기
from django.contrib.auth.decorators import login_required
@login_required
이렇게 장고에서 제공하는 데코레이터를 사용하면 된다.
https://docs.djangoproject.com/en/3.2/topics/auth/default/#the-login-required-decorator
Using the Django authentication system | Django documentation | Django
Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate
docs.djangoproject.com
settings.py 에서 Login_url을 지정해주면 로그인이 안된 상황에 해당 모델이 적용된 url로 접근할 경우 login_url로 보내버린다.
'Application > Python-Django' 카테고리의 다른 글
대신보다 프로젝트 작업내용 (Django, PWA, TailwindCSS, FCM) (0) | 2022.12.14 |
---|---|
파이썬 가상환경 venv - 자꾸 까먹는 금붕어같은 나를 위하여 (0) | 2022.02.28 |
Django 에어비앤비 클론 3부 (21.04.05 ~ 12.06) (0) | 2021.04.05 |
Django 에어비앤비 클론 2부 (21.03.16 ~ 04.05) (0) | 2021.03.22 |
Django 에어비앤비 클론 1부 (21.02.01 ~ 25) (0) | 2021.03.22 |