1.Login 및 Logout 사용
1). Login사용
Django는 기본적으로 로그인 폼을 제공해준다. 따라서 다른 웹프레임워크에서 힘들게 로그인 셋팅을 하는 것을 간단하게 나타내주기 때문에 편리하게 로그인 화면을 작업할수 있게 되었다.
먼저 settings.py에서 아래와 같이 셋팅한다. LOGIN_URL과 SESSION_COOKIE_AGE 및 SESSION_SAVE_EVERY_REQUEST를 셋팅한다. 해당 LOGIN_URL은 login하는 폴더를 말하고 SESSION_COOKIE_AGE는 세션타임아웃을 말한다. SESSION_SAVE_EVERY_REQUEST는 세션을 사용할껀가 묻는 말인데 True로 셋팅하면 세션을 사용할수 있다.
다음으로 login 및 logout에 대하여 urls.py에 설정한다. 보면은 login URL파라미터 접근시 views의 user_login을 호출하고 logout은 logout_view를 호출한다.
이제 views.py로 돌아온다.
views.py는 아래 그림처럼 authenticate 모듈에 login 및 logout 클래스를 불러온다. 그리고 login_required를 사용하는데 login_required는 Django에서 각 class에 접근사용시 Login을 요청할수 있다. 따라서 로그인이 되어 있지 않은 URL로 접근되지 않게 설정하는 메소드 이다.
이제 views.py에 user_login화면을 추가시킨다. 해당 user_login은 post형식으로 받고 username 및 password를 post를 받아서 변수에 저장한다. 이후 user라는 변수에 username 및 password내용을 저장하고 user내용이 있을시 login함수를 사용하여 로그인을 한다. 이때 정상으로 되면은 sb_admin_dashboard로 리다이렉션한다.
만약 post형식이 아니면 login.html을 보여준다.
다음으로 login.html에서 다음을 셋팅한다.
form 태그에 action부분에 {% url 'sb_admin_login' %} 을 넣어서 해당 폼의 username 및 password를 입력 받는데 post방식으로 전송한다.
해당 전송이 성공적으로 이루어지면 위의 user_login class가 실행되어 아이디 및 패스워드가 설정된다.
이정도만 해도 일단은 로그인 시스템을 다 구축된거지만 여기서 추가적으로 base.html에 해당 사용자를 화면에 나타내보도록 하겠다.
base.html에 side-bar 밑에 아래 코드를 추가한다.
해당 사용자는 {% if user.is_authenticated %}로 사용자가 로그인 되어 있는지 확인한다. 로그인 되어 있으면 User: 뒤의username을 출력한다. 그렇지 않으면 Login화면으로 리다이렉션되게 설정되어 있다. 그리고 endif로 종결되어 있다.
해당 부분을 셋팅하면 아래 그림처럼 사용자가 로그인된 화면을 볼수가 있다.
여기에서 아래 그림처럼 @login_required를 입력한다. 이것은 해당 dashboard접근시에는 login이 필요하다는 의미이다. 로그인이 되어 있지 않을시 로그인이 되지 않으며, login.html로 리다이렉션 된다. 해당 부분을 각 class 함수마다 셋팅하도록 하자.
2).Logout 셋팅
로그아웃은 logout 파라미터에 갈시 logout class를 불러오기만 하면 된다. 불러온후 로그인 화면으로 리다이렉션 되면은 되기 때문에 django특성으로 간단하게 만들수 있다.
먼저 아래 그림처럼 base.html에서 dropdown-item에서 Logout 아이템을 찾는다. 처음에 modal로 형식으로 되어 있을수 있다. 여기서 modal로 해도 되고 나는 바로 logout시키기 위해 a 태그를 이용하였다. 그 옆에서 href를 만드는데 sb_admin_logout으로 url를 리다이렉션 시킨다.(modal또한 단순 logout으로 리다이렉션 시키면 된다.)
로그아웃은 아래 그림처럼 logout_view으로 만들고 단순히 logout 함수를 불러오면 끝난다. 로그아웃후 render로 login.html으로 리다이렉션 시키게 설정해두면 된다.
이상으로 Django 및 sbadmin을 이용한 yara gui만들기를 완성해 보았다. 이뿐만 아니라 다른 솔루션 제작할때에도 위와 같은 방법으로 제작할수가 있다. 물론 sbadmin이 아니라 bootstrap만으로도 제작할수도 있으니 위의 기본적인 바탕으로 원하는 솔루션등을 만들어보면 좋을것 같다.
'프로그래밍 > django' 카테고리의 다른 글
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(14) (0) | 2020.03.31 |
---|---|
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(12) (0) | 2020.03.23 |
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(11) (0) | 2020.03.21 |
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(10) (0) | 2020.03.21 |
Django 와 SB Admin을 이용한 Yara GUI Interface 만들기(9) (0) | 2020.03.18 |
댓글