12

私は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 サーバーでは機能していないように見えるため、デバッグするのは難しいと思います。

ありがとう、ラファエル

4

1 に答える 1

30

ビューコード、特に行に多くの部分がコメントアウトされています

latest_clip_list = Clip.objects.all()#.values_list("name","id")#.order_by('-pub_date')[:5]

発生するエラーは'Manager' object is not iterable、テンプレートのforループがClip.objectsクエリセットではなくマネージャーを反復処理しようとしていることを示していますClip.objects.all()

ビューが実際に読み取られることを再確認してください

latest_clip_list = Clip.objects.all()

のように見えるだけではありません

latest_clip_list = Clip.objects
于 2013-02-10T07:09:52.093 に答える