nvalid block tag on line 20: 'else', expected 'empty' or 'endfor'. Did you forget to register or load this tag?

이상해씨·2023년 7월 25일

에러

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 %}는 데이터가 있을 때 어떤 처리를 할지 정의하는데 사용.
profile
공부에는 끝이 없다

0개의 댓글