Web/Django Project

Simple Login/Logout

Hansoo1018 2018. 7. 24. 21:42

Django 를 이용하여 웹 서버를 구축하는 프로젝트를 진행한다.


  우선 인증 관련 부분인 Login, Logout, 회원가입, 비밀번호 변경 등에 관한 기능을 구현할 것이다.


  제목을 Simple 이라 붙인 것은 단순하게 장고에 포함되어있는 auth app을 이용하여 구현해 볼 것이기 때문이다. 추후 커스터마이징을 하여 본 웹 프로젝트의 기능에 추가할 것이다.


< auth APP >



  settings.py 파일의 임포트하는 APP 리스트를 보면 'auth'라는 app이 있는 것을 볼 수 있다. 


  auth app 을 사용하기 위해 urls.py 에 url을 등록한다.


< urls.py >


  이름은 'accounts'로 url을 정해주었다. 어떤 이름이든 상관없다. 이 url로 auth.urls를 include하게 되면 아래와 같은 url 들이 추가적으로 등록된다.



< 추가되는 url 들 >


  다음으로 login을 할 페이지를 만들어야한다. 프로젝트 경로에서 templates 폴더를 만들어 준 후, 그 하위 디렉토리에 'registration' 이라는 이름으로 폴더를 만들어 준다. 그 아래에 login.html을 만들어준다.


  우리가 사용할 auth APP은 registration 폴더의 login.html 을 사용하기 때문에 우리가 이와 같은 경로와 이름으로 파일을 만들어 주는 것이다.


< login.html 파일 생성 >


  그 후 login.html 을 작성한다.


< login.html >


  login.html 을 보면 post 방식으로 내용을 전달한다. 여기서 form.as_p 는 우리가 입력해야할 대상들을 <p> 으로 감싸서 출력해준다. Login 버튼을 누르면 submit 기능을 하는데 post 방식으로 우리가 입력한 아이디와 비밀번호를 전달하는 기능을 한다.


  위의 템플릿을 찾아 갈 수 있도록 settings.py 에서 TEMPLATES 디렉토리를 지정해준다.



< settings.py 수정 >



  이 파일 맨 마지막에 login 했을 때, 어디로 redirect 시킬지에 대한 정보도 같이 적어준다.


< settings.py 수정 >


  login이 되었을 때, '/' 경로로 이동시킨다.



  지금 까지 만든 화면을 확인해 보겠다.



< 중간 확인 >


  사용자 아이디와 비밀번호를 입력하는 란이 나오고 login 버튼까지 잘 만들어 졌다.



  로그인이 성공했을 대 '/' 페이지로 이동하도록 했는데, 아직 '/' 페이지가 없다. 그러므로 지금 만들어 주도록 할 것이다.


< template 추가 >


  확장성 있게 개발하기 위하여 block content를 사용할 것이다. 다음은 base.html 이다.


< base.html >


  이제 base.html을 이용하여 home.html을 작성한다.


< home.html >


  home.html 내용을 보면 user.is_authenticated 라는 함수로 인증이 됬는지를 확인하고 있다. 인증이 되었다면 이름과 안녕 그리고 로그아웃 버튼을 출력해주고 인증이 되지 않았다면 로그인이 되지 않았으므로 로그인 할 수 있도록 링크를 달아주었다.



< login.html >


  base.html 을 이용하여 login.html도 수정하였다. 마지막으로 지금 만든 '/' 경로에 url을 설정해준다.


< urls.py >


  home.html을 보여준다. 여기서 url 이름을 home으로 정했으므로 로그인했을 때, 로그아웃 했을 때 리다이렉션 시켜줄 주소를 하드코딩 하지 말고 위의 이름으로 바꾸어준다.


< redirect url >



  이렇게 되면 완성이다. 지금 까지 만든 기능을 확인해볼 것이다.



< 로그인 화면 >


  로그인 화면에 기존에 만들었던 superuser로 로그인해보앗다.



< 로그인 된 화면 >


  root에게 인사를 하고 아래에 logout 링크가 있다. 해당 링크를 클릭하면 로그아웃이 된다.



< 로그아웃 된 모습 >


  로그아웃이 되면 위와 같이 로그인이 되지 않았다며 로그인 하는 링크를 보여준다.


  지금까지 Django에 내장되어있는 auth APP을 이용하여 간단한 login/logout 기능을 구현해 보았다.