• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

13:49초 TypeError: 'int' object is not iterable 어떻게 해결해야 할까요?

22.10.12 22:57 작성 조회수 829

1

강의 13:49초 부분에서 처음에는 Not found 라고 나오고 다른 사람들이 질문한 내용을 토대로 수정-실행 반복을 통해 TypeError: 'int' object is not iterable 메세지에서 해결을 못하고 있습니다. 어디가 잘못됐으며 어떻게 해결을 해야할까요?

int object is not iterable.png

@app.route("/list")
def lists():
    board = mongo.db.board
    datas = board.count_documents({})
    return render_template("list.html", datas=list(datas))

 

{% if datas.count_documents() > 0 %} <!--위에 count_documents() 부분은 count, length 로 해도 문제가 발생합니다 -->

{% if datas.count_documents() > 0 %}
<!--위에 count_documents() 부분은 count, length 로 해도 문제가 발생합니다 -->
<table>
    <thead>
        <tr>
            <td>번호</td>
            <td>제목</td>
            <td>이름</td>
            <td>날짜</td>
            <td>조회수</td>
        </tr>
    </thead>
    <tbody>
        <!--(주석) 반복되는 구간-->
        {% for data in datas %}
        <tr>
            <td></td>
            <td>{{data.title}}</td>
            <td>{{data.name}}</td>
            <td>{{data.pubdate}}</td>
            <td>{{data.view}}</td>
        </tr>
        {% endfor %}
        <!--반복되는 구간 끝-->
    </tbody>
</table>
{% else %}
<h3>데이터가 존재하지 않습니다.</h3>
{% endif %}

답변 2

·

답변을 작성해보세요.

0

board.count_documents({})

위 코드는 문서의 갯수를 세는 역할을 합니다. 그런데 작성하신 코드를 보면

 

datas = board.count_documents({})


위와 같이 문서의 갯수 값을 데이터로 받아서 그 데이터를 넘겨주고 계십니다.

 

datas에는 문서의 집합이 들어가야 합니다. 그래야 list(datas)를 했을때 list(문서집합)을 리스트로 변환해서 넘겨주고 그렇게 데이터가 넘어가야 HTML에서도 data.title 이란 요소가 존재하게 됩니다. 지금은 쉽게 list(5)를 하신것과 같은 맥락입니다.

0

oort_cloud98님의 프로필

oort_cloud98

2022.10.13

board = mongo.db.board
datas = board.count_documents({})
return render_template("list.html", datas=list(datas))

카운트 하신 문서의 숫자를 list 생성 값으로 넣어주셔서 그런 것 같습니다.
현재 코드는 아래와 같습니다.
board = mongo.db.board datas = board.count_documents({}) // 문서의 개수 반환 ex) 5
return render_template("list.html", datas=list(5))

list(5) 처럼 list 생성을 시도하면 컴파일 에러가 나옵니답.

count, length를 사용해도 에러가 나온 이유는 이미 앞에서 에러가 나서 그렇습니다.