我正试图用冷冻瓶冷冻烧瓶现场,并且我被困在一个网址生成器上。
我的图片有@app.route
:
@app.route('/images/<image>/')
def images(image):
return send_from_directory(os.path.join(app.root_path, 'images'), image)
Frozen-flask警告我&#34; 没有为端点图像冻结。你忘记了一个URL生成器吗?&#34;所以我尝试生成像这样的网址生成器
@freezer.register_generator
def images():
path = os.path.join(app.root_path, 'images')
images = next(os.walk(path))[2]
return images
会产生ValueError
:&#39; 404 NOT FOUND&#39;
我做错了什么?
答案 0 :(得分:2)
Frozen-Flask生成器需要一个带字典的迭代:
@freezer.register_generator
def images():
path = os.path.join(app.root_path, 'images')
images = next(os.walk(path))[2]
for image in images:
yield {"image": image}
你这样做的方式,你返回了一个可迭代的字符串,Frozen-Flask将其理解为URL而不是值。
如果要返回字符串,则必须返回URL:yield url_for('images', image=image)
此外,您的路线不应该有尾部斜线,因为这样冻结Flask了解它是一个文件夹,其中默认文件有index.html
。删除尾部斜杠:@app.route('/images/<image>')
查看文档以获取更多详细信息:https://pythonhosted.org/Frozen-Flask/#url-generators