Django 13

‍박태우·2023년 5월 8일
0
post-custom-banner

# Longin/Logout 구현

(위와 같이 urls.py에 login과 logout 관련 뷰의 경로와 이름 지정,
클래스 형태이기 때문에 .as_view()를 붙이기!!

() 안에는 템플릿을 지정해줘야함, 우리가 직접 만들어서 쓸 것이기 때문
logout은 따로 설정할 것이 없음.)


(따로 login.html을 구현해 준 모습)


(실제로 로그인 구현한 모습은 위와 같다.)


(create에서 설정한 아이디와 비밀번호를 입력 후 로그인을 하면
account/profile 로 넘어가면서 위와 같은 에러 메세지가 뜬다.

로그인 성공후 어디로 가야하는 설정을 하지 않음. 디폴트로 설정되는 곳이 위와 같은 곳이다.)

Login 과 Logout에서의 Redirect


=> next 라는 이름을 가진 post 또는 get 파라미터를 찾고, 존재하면 이곳으로 다시 간다. 하지만 이것이 없으면 우리가 만든 pragmatic 폴더에서 setting 내부에 있는 login_redirect_url 혹은 logout_redirect_url경로가 있으면 그곳으로 간다. 만약 이것도 없으면 디폴트로 적용된다.
(방금의 account/profile 이 디폴트의 예시)

따라서 앞에 있는 두가지 방법으로 원치 않는 경로로 가는 것을 방지한다.

#로그인 창으로 들어가는 링크 구현하기

(header.html에 구현한 login, logout에 대한 링크 지정.

우리가 만든 페이지 어디서든 간에 그 url을 next 라는 인자로 넘겨 줌으로서 로그인 또는 아웃을 하고 나서 원래 있던 그 자리로 되돌아 올수 있게 하는 것이다.

그리고 꼭 ?를 앞의 문장과 붙여야 한다 띄어쓰면 오류 발생!!!)

url 확인!!

=> 로그아웃 후 다시 login 을 누르게 되면 위와 같이 원래 있었던 경로의 url 이 넘어와 있는 것을 확인 할 수 있다.

But 하지만 주소창에 직접 account/login 을 누르고 로그인을 하면 아래와 같이 다시 디폴트 페이지로 가버림

=> 해결하기 : 위에서 설명한 login_redirect_url 을 사용하면 된다.

(setting.py 맨 밑줄에 위와 같이 url을 reverse 를 이용하여 경로를 지정해 주면 된다.)

profile
잘 부탁드립니다.
post-custom-banner

0개의 댓글