私はdjangoを初めて使用し、チュートリアルで説明されている投票Webサイトと大差ないアプリケーションを作成しました。私が得るウェブサイトで:
Exception Type: TemplateSyntaxError
Exception Value:
Caught TypeError while rendering: 'Manager' object is not iterable
Exception Location: /usr/lib/python2.7/dist-packages/django/template/defaulttags.py in render, line 190
エラー行 4 をマークするテンプレートを指します (レンダリング中に TypeError をキャッチ: 'Manager' オブジェクトは反復可能ではありません):
test
2 {% if clips %}
3 <ul>
4 {% for aclip in clips %}
5 <li><a href="/annotate/{{ aclip.id }}/">{{ aclip.name }}</a></li>
6 {% endfor %}
7 </ul>
8 {% else %}
9 <p>No clips are available.</p>
10 {% endif %}
クリップ オブジェクトは次のとおりです。
class Clip(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=30)
url = models.CharField(max_length=200)
そしてビューコード:
def index(request):
#return HttpResponse("You're looking at clips.")
mylist = []
latest_clip_list = Clip.objects.all()#.values_list("name","id")#.order_by('-pub_date')[:5]
print latest_clip_list
return render_to_response('annotateVideos/index2.html', {'clips': latest_clip_list})
manage,py シェルからこのコードを実行すると、例外はありません。
In [2]: from annotateVideos import views
In [3]: f = views.index("")
[{'id': 6L, 'name': u'segment 6000'}]
In [4]: f.content
Out[4]: 'test\n\n <ul>\n \n <li><a href="/annotate//"></a></li>\n \n </ul>\n'
何か案は?コードはシェルでは機能しているように見えますが、Web サーバーでは機能していないように見えるため、デバッグするのは難しいと思います。
ありがとう、ラファエル