장고 템플릿 내에서 세션에 직접 접근할 일이 생겼다.
보통 세션을
request.session["session_name"]
이런식으로 사용하는데, 역시 템플릿 파일에서도
{{request.session["session_name"]}}
이런식으로 작성해 보았다.
템플릿파일이라 안 될거라곤 어느정도 예상하고 있었고, 역시 되지 않았다.
검색해보니 프로젝트 settings.py 내에 설정값을 추가해 주어야 했다.
템플릿 관련 옵션 등을 담고있는 TEMPLATES 변수에 OPTIONS 부분에 "django.core.context_processors.request"를 추가해주고 다시 개발서버를 실행시켜 보았지만 역시 애러와 함께 되지 않았다.
심지어 아까와 같은 애러였다.
또 검색을 해보다가 세션에 접근할 때 request.session["session_name"]이 아닌 request.session.session_name으로 접근해야 된다는 것을 알게됬고, 적용시켜보았지만, 이번에는 갑자기 ModuleNotFoundError가 떴다.
정말 뜬금없는 애러라 자세히 살펴보니 아까 설정파일에 추가한 django.core.context_processors 모듈을 찾을 수 없다는 거였다.
내장모듈일텐데 찾을수 없다는게 뭔가 이상하다고 생각하면서, 한편으론 뭔가 이상함을 느끼면서 다시 검색을 시작했다.
그러다 스택 오버플로우에서 다음과 같은 답변을 발견하게 되었다.
django.core.context_processors
Built-in template context processors have been moved to django.template.context_processors
...
...
몇십분을 이것때문에 머리를 싸매고 고민했는데 고작 애러원인이 뭐 대단한게 아니라 단순히 쓰려고 했던게 대체되었다니, 더군다나 더 허탈했던건 대체된 설정값이 이미 추가되어 있었다는 것이다.
결론은 애초에 settings.py를 건들 필요도 없었고, 단순히 템플릿 파일 내에서 세션에 접근하는 방식만 바꿔주면 되었던 것이었다.
그러니까 다시말해, 아무것도 건들이지 않아도 되었던 것이다.
정말 그걸 알았을때는 힘이 쭉 빠지면서 현타가 왔었다 ㅋㅋ
뭐 사실 결국 내 잘못이긴 하다. 인터넷에 올라온 해결책들이 늘 최신이라고 믿고있었던게 컷고, 좀더 알아봤더라면 이런 삽질을 하지 않아도 됬을 것이다.
그래도 신기했던건 설정파일에서 템플릿 내에서 사용할 수 있는 객체나 그런것들을 직접 추가해 줄 수 있다는 것이었다
또, 그동안 만났던 대부분의 문제들은 검색으로 해결되는 문제였지만, 이번에는 오히려 검색결과중 일부가 잘못되어서 해결하는데 좀더 오래 걸린 문제였다.
언어나 프래임워크는 늘 버전이 변해서 버전에 따른 차이가 있다는 것, 때문에 시간이 지나면 옛날 문서들은 대부분 맞지 않는다는 것을 알고는 있었지만, 이번에 직접 겪어보니 더 실감이 났다.