dboard - dark/light theme 구현
아무래도 기본적으로 다크모드 정도는 있어줘야 할것 같아서 한시간 후다다닥 구현했다.
1. 테마를 어디에 저장해둘까 고민
DB 에 저장되는 사용자 정보에 아예 넣을 수도 있겠지만 좀 과한것 같고... 그냥 세션에서만 유지되도록 했다. 사실 쿠키에 저장하는게 맞는 것 같긴 한데, 쉬운 구현을 위해서 세션에 넣어버림.
2. 색 지정 정리
style.css, style-small.css 두개의 스타일시트가 있고, 그 외에도 JS 나 django template 에서 색을 직접 지정하는게 있었다. style.css 에서만 색을 지정하도록 몰아주기를 했다.
3. 그리고 style.css 를 복사해서 style-dark.css 를 만들고, color 지정된 부분을 한땀한땀 교체. 그런데 대부분 dimgray -> whitesmoke 로 되긴 했다.
3. base.html 에서 request.session 정보에 따라 style.css / style-dark.css 분기
4. 세션에 request.session 값을 dark <-> light 바꿔줄 수 있는 url 추가. theme 를 인자로 받아서 세션에 바꿔넣고 전 페이지로 돌리는게 전부.
5. 적당한 곳에(나는 footer 에...) 4번에 만든 url 링크를 넣어줌. 이모지 검색해서 dark: ☽ / light: ☼ 이렇게 넣었다. 누를때마다 바뀜.
6. 로그인/로그아웃할 때에도 테마 선택이 유지될 수 있게 로그아웃 동작 오버라이드해서 theme 유지하도록 해줌.
끗!
-----