Django - (6)

이정인·2023년 5월 15일
0

Django_기말

목록 보기
6/11


# 파일 수정하기

  • views.py 파일 수정하기
    -> UpdateView와 DeleteView 클래스에 아래의 코드 추가하기
    context_object_name = 'target_user

  • delete.html 파일 form 수정
    pk=target_user.pk로 수정

  • update.html 파일 form 수정
    pk=target_user.pk로 수정

  • pragmatic / pragmatic / urls.py 파일 수정
    accounts로 path 수정


# views.py 에 인증 넣기

  • hello_world 페이지에서 로그인이 되어있을 경우와 로그인이 되어있지 않은 경우 구분함.
    -> 로그인이 안되어있다면 login 페이지로 넘어감

logout 이 되어있는데 주소창에 accounts/update를 입력하면 계정을 update하는 페이지로 넘어가지는 문제 발생


# 위의 문제 해결

-> 주소창에 accounts/update 와 같이 잘못된 접근을 시도하려고 하면 login 창으로 넘어감

  • views.py 파일에 코드 추가
    -> UpdateView / DeleteView 클래스에 코드 추가
    def get(self, *args, **kwargs):
        if self.request.user.is_authenticated:
            return super().get(*args, **kwargs)
        else:
            return HttpResponseRedirect(reverse('accountapp:hello_world'))

    def post(self, *args, **kwargs):
        if self.request.user.is_authenticated:
            return super().post(*args, **kwargs)
        else:
            return HttpResponseRedirect(reverse('accountapp:hello_world'))

login을 하고 다른 계정에 접근하려고 다른 페이지를 입력하면 접근이 되는 문제 발생

  • login 되어있는 user와 요청을 보내는 user가 같을 경우에만 접근 허용되도록 함.

  • 주소 돌려주는 부분 Forbidden으로 수정

-> UpdateView / DeleteView 에 아래의 코드 추가

and self.get_object() == self.request.user

profile
둉이닝

0개의 댓글

관련 채용 정보