작성
·
1K
1
강의 13:49초 부분에서 처음에는 Not found 라고 나오고 다른 사람들이 질문한 내용을 토대로 수정-실행 반복을 통해 TypeError: 'int' object is not iterable 메세지에서 해결을 못하고 있습니다. 어디가 잘못됐으며 어떻게 해결을 해야할까요?
@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
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를 사용해도 에러가 나온 이유는 이미 앞에서 에러가 나서 그렇습니다.