본문 바로가기

Django

TemplateSyntaxError: 'pybo_filter' is not a registered tag library

설 연휴 때 장고 책을 보며 템플릿 필터를 만들다 난 에러다. 시도와 해결을 기록하고자 글로 남긴다.

에러가 나기 전에 한 것

1. app directory 아래에 templatetags 폴더 생성

2. 이 폴더 안에 pybo_filter.py 파일 생성

3. 파일 내용은 이 링크를 참고

4. templates/pybo/question_list.html 파일에 만든 파일을 load

5. 이미 돌아가고 있던 서버. 페이지를 새로고침 함

-> {% load pybo_filter %} 라인에서 에러가 발생했다.

시도

1. 서버 끄고 다시 켜기

혹시나 해서 해봤다. 서버를 재시작하니 에러 이름이 바뀌었다.

AttributeError: type object 'Library' has no attribute 'tags'

에러가 발생하는 라인은 {% load pybo_filter %}로 같았다.

2. pybo/templatetags 폴더 안에 __init__.py 추가하기

-> 1번의 에러가 유지되었다.

 

3. config/settings.py 확인

참고 링크를 보고 INSTALLED_APP에 pybo가 있는지 확인했다. 당연히 있다. 이 직전까진 멀쩡했으니까...

 

4. config/settings.py에서 TEMPLATES 건드리기

참고 링크를 보고 해봤지만 소용 없었다.

 

5. 탈자 수정

4번에서 했던 걸 주석처리하고, pybo/templatetags/pybo_filter를 다시 살폈더니

register = template.Library()

여기서 ()가 빠져 있었다. 붙여주니 해결되었다...

결론

탈자가 원인. 오탈자 없는지 꼼꼼히 볼 것.

책에는 안 쓰여있지만, 공식문서에서는 패키지 인식을 위해 __init__.py 파일을 추가하라고 한다.