저는 Python을 처음 사용합니다. Google App Engine을 사용하여 간단한 학습을 통해 블로그를 배울 수 있습니다.Google App Engine 및 Django 템플릿 :이 두 가지 사례가 다른 이유는 무엇입니까?
entries = db.Query(Entry).order("-published").get()
comments = db.Query(Comment).order("published").get()
self.response.out.write(template.render(templatePath + 'test.django.html', { 'entries': entries, 'comments': comments, }))
그리고 다음과 같습니다 장고 템플릿 : 내가 브라우저에서이 템플릿 페이지를 볼 때
{% extends "master.django.html" %}
{% block pagetitle %}Test Page{% endblock pagetitle %}
{% block content %}
{% for e in entries %}
<p><a href="/post/{{ e.slug }}/">{{ e.title|escape }} - {{ e.published|date:"jS o\f F Y" }}</p>
{% endfor %}
{% for c in comments.all %}
<p>{{ c.authorname }} {{ c.published|date:"d/m/Y h:i" }}</p>
{% endfor %}
{% endblock content %}
, 내가 얻을 :
TypeError: 'Entry' object is not iterable
나는 다음과 같은 테스트 코드를 {% for e in entries %}
줄을 {% for e in entries.all %}
으로 변경하면이 문제가 해결되므로 큰 문제입니다.
그러나 이것은 이해할 수없는 부분입니다. (아카이브 페이지) 다른 템플릿에, 나는 같은 일을 전달, 항목의 목록은 오브젝트 :
entries = db.Query(Entry).order("-published").fetch(limit=100)
self.response.out.write(template.render(templatePath + 'archive.django.html', { 'entries': entries, }))
을 템플릿으로 다음과 같이이 코드는 잘 작동
{% extends "master.django.html" %}
{% block pagetitle %}Home Page{% endblock pagetitle %}
{% block content %}
<ul>
{% for entry in entries %}
<li><a href="/post/{{ entry.slug }}/">{{ entry.title|escape }} <span>{{ entry.published|date:"jS o\f F Y" }}</a>{% if admin %} - <a href="/compose/?key={{ entry.key }}">Edit Post</a>{% endif %}</span></li>
{% endfor %}
{% endblock content %}
,
없이 변경
entries
to
entries.all
; 참으로 만약 내가
을 수행하면은 출력을 얻지 못한다. (아무런 오류도 없다.
누군가가이 문제를 설명 할 수 있습니까?
편집 : 원래 두 번째 예제에 대한 잘못된 쿼리 조각을 붙여 넣었습니다. 그러면 사람들이 내게 답변을 더 쉽게 제공 할 수있게되었습니다 ... 지금 변경했습니다.
맞아요, 고마워요. 제가 두 번째 코드가 잘못된 코드를 복사했기 때문입니다. 아카이브 쿼리는 실제로 fetch (limit = 100)를 사용하고있었습니다. –