【发布时间】:2014-11-09 18:11:41
【问题描述】:
我正在用 python 和烧瓶构建图像上传器。我已经在我的 VPS 上启动并运行了
http://107.170.119.38/
应用程序可以正常显示前 25 张图像,但第 25 张图像之后的任何内容都不会显示在任何地方。我正在尝试添加一个按钮,让我可以显示接下来的 25 张图像。这是我的代码示例
@app.route('/', methods=['GET', 'POST'])
def get_more_pics():
g.db = connect_db()
cur = g.db.execute('select filename, label from pics order by id desc limit 25')
more_pics = [dict("filename": row[0], "label": row[1]) for row in cur.fetchall()]
g.db.close()
return render_template('upload.html', more_pics=more_pics)
def upload_pic():
if request.method == 'POST':
file = request.files['file']
label = request.form['label']
try:
extension = file.filename.rsplit('.', 1)[1].lower()
except IndexError, e:
abort(404)
if file and check_extension(extension):
# Salt and hash the file contents
filename = md5(file.read() + str(round(time.time() * 1000))).hexdigest() + '.' + extension
file.seek(0) # Move cursor back to beginning so we can write to disk
file.save(os.path.join(app.config['UPLOAD_DIR'], filename))
add_pic(filename, label)
gen_thumbnail(filename)
return redirect(url_for('show_pic', filename=filename))
else:
# Bad file extension
abort(404)
else:
return render_template('upload.html', pics=get_last_pics())
@app.route('/show')
def show_pic():
filename = request.args.get('filename', '')
t = (filename,)
cur = g.db.execute('select label from pics where filename=?', t)
label = cur.fetchone()[0]
return render_template('upload.html', filename=filename, label=label)
# Return a list of the last 25 uploaded images
def get_last_pics():
try:
cur = g.db.execute('select filename, label from pics order by id desc limit 25')
filenames = []
for row in cur.fetchall():
filenames.append({"filename": row[0], "label": row[1] or ''})
return filenames
except:
return []
在jinja2模板文件中:
<input type="button" value="Get More Pics" onclick="{{ more_pics }}">
<ul>
{% for pic in more_pics %}
<li class="thumb">
<a href="{{ url_for('show_pic', filename=pic.filename) }}"><img class="thumb" src="{{ pic_path('thumb2_'+pic.filename) }}"></a></li>
{% endfor %}
</ul>
总而言之,我不知道如何让 get_more_pics() 函数显示接下来的 25 张图像。任何帮助将不胜感激
【问题讨论】:
-
您在查询中包含
limit 25。这将始终将您限制在前 25 个结果中。
标签: python sqlite flask jinja2