我不知道这段代码有什么问题,但得到" 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 %}
答案 0 :(得分:1)
在allfile()
内部,您定义了一个名为fileStream
的局部变量,其中包含大写字母S.但是传递给模板的是filestream
,小写字母为S;这不是本地定义的,因此Python使用引用filestream()
处理程序的模块级名称。
确保您在函数中使用一致的大写。