인프런 커뮤니티 질문&답변

MIKE.aeon님의 프로필 이미지

작성한 질문수

남박사의 파이썬으로 실전 웹사이트 만들기

게시판만들기 - 글 리스트

문법 문의 - {% if datas.count() > 0 %}

21.03.18 23:59 작성

·

237

1

안녕하세요 남박사님.

list.html 에서 datas를 받고 화면표시하는 부분에서 아래 조건문로 개수를 확인하는 부분에 대해 문의 드립니다.

{% if datas.count() > 0 %}
 /* 화면표시 로직 */
{% else %}
  <h3>데이터가 없습니다~~</h3>
{% endif %}

if문의 datas.count()는 몽고디비에만 해당하는 문법인가요?

아래 리스트형 데이터(datas)를 화면에 표시하려고, data.count() 를 사용했더니, 문법 오류가 발생하여 datas|length 로 처리하였더니 오류 없이 처리되었습니다.

datas:  [{'name': '면도기'}, {'name': '가방'}, {'name': '원피스'}, {'name': '공기청정기'}]

{% if datas|length > 0 %}
  <h3>데이터가 있습니다</h3>
{% else %}
  <h3>데이터가 없습니다~~</h3>
{% endif %}

몽고의 리턴결과와 리스트형 데이터의 처리문법이 위에 표시한것처럼 다르게되는지 문의 드립니다. 

몽고결과의 데이터타입과 리스트형 데이터 타입이 달라서 처리방식이 다른지 답변부탁드립니다.

답변 1

0

남박사님의 프로필 이미지
남박사
지식공유자

2021. 03. 27. 20:23

count() 함수는 몽고DB 의 cursor 객체에서 지원하는 함수기 때문에 if datas.count() 를 사용할 수 있는건 파이썬 코드에서 몽고DB의 커서를 넘겼을때 사용가능합니다. cursor 는 한번 출력되면 재사용이 불가능합니다.

만약 커서객체가 아닌 리스트로 데이터를 넘겼을 경우에는 말씀하신것 처럼 datas|length 로 리스트의 길이를 알아 올 수 있습니다. 리스트는 페이지 내에서 언제든 재사용이 가능합니다.