에러
nvalid block tag on line 20: 'else', expected 'empty' or 'endfor'. Did you forget to register or load this tag?
상황
- django에서 검색 데이터 입력
- 서버에서 검색결과가 없는 데이터를 검색했을 때 발생
원인
- html에서 검색 결과를 return하는 조건문에서 검색결과가 없을 때 else문을 사용하여 처리하도록함
해결방법
- 데이터가 return되는 값이 없을 경우, else문이 아닌 empty 문을 사용하여 처리
{%empty%}와 {%else%}의 차이
{% empty %}:
- {% empty %}는 {% for %} 반복문에서 사용되며, 반복 대상인 컬렉션이 비어있을 때 실행.
- {% for %} 반복문이 실행 전에 컬렉션이 비어있는지를 확인하고, 비어있는 경우에는 {% empty %} 블록 안의 코드가 실행.
- {% empty %}는 데이터가 없을 때 어떤 처리를 할지 정의하는 데 사용됩니다.
{% else %}:
- {% else %}는 {% for %} 반복문이 실행될 때, 해당 컬렉션이 비어있지 않을 경우에는 실행되지 않음.
- {% else %}는 데이터가 있을 때 어떤 처리를 할지 정의하는데 사용.