为什么要获得TypeError:' function'对象不可迭代?

时间:2016-03-26 21:16:10

标签: python html flask

我不知道这段代码有什么问题,但得到" TypeError:' function'对象不可迭代" 它适用于' / filestream'但不适用于' / allfile'

python代码

@app.route('/allfile')
@login_required
def allfile():
    fileStream = models.File.select().limit(100)
    return render_template('filestream.html', filestream=filestream)

@app.route('/filestream')
#@app.route('/filestream/<username>')
def filestream(username=None):
    template = 'fileStream.html'
    if username and username != current_user.username:
        user =     models.User.select().where(models.User.username**username).get() # the ** is     the "like" operator (non-case sensitive comparison)
        filestream = user.files.limit(100)
    else:
        filestream = current_user.get_filestream().limit(100)
        user = current_user
    #if username:
        #template = 'user_stream.html'
    return render_template(template, filestream=filestream, user=user)

HTML代码

{% extends "layout.html" %}

{% block content %}
{% for file in filestream %}
  <article>
    <h2>
      <a href="{{ url_for('filestream', username=file.user.username) }}">
        {{ file.user.username }}
      </a>
    </h2>
    <i class="clock"></i>
    <time data-time="{{ file.timestamp }}" }}">
      {{ file.timestamp.strftime('%Y-%m-%d %H:%M:%S') }}
    </time>
   <!-- <a href="{{ url_for('view_file', file_id=file.id) }}"     class="view">View</a>-->
    <div class="file">
        <a href="{{ file.path}}"</a>
       <img src="{{ file.path }}" alt=""     style="width:521px;height:512px;"> 
    </div>
  </article>
{% endfor %}
{% endblock %}

1 个答案:

答案 0 :(得分:1)

allfile()内部,您定义了一个名为fileStream的局部变量,其中包含大写字母S.但是传递给模板的是filestream,小写字母为S;这不是本地定义的,因此Python使用引用filestream()处理程序的模块级名称。

确保您在函数中使用一致的大写。