将Flask AutoIndex绑定到http:// localhost以外的其他URL?

时间:2013-11-25 17:37:02

标签: python flask

我是Flask的新手,想要使用以下基本示例(使用Flask-AutoIndex)来列出目录中的文件和文件夹:

import os.path
from flask import Flask
from flask.ext.autoindex import AutoIndex

app = Flask(__name__)
AutoIndex(app, browse_root=os.path.curdir)

if __name__ == '__main__':
    app.run()

这个例子适用于我,

http://localhost/folder1/folder2

列出了folder2中的文件和文件夹。

我遇到的问题是这些网址已经绑定到其他一些功能用于其他目的,这使得AutoIndex无法正常工作(网址冲突)

是否可以将AutoIndex绑定到其中包含额外单词“list”的其他URL?类似的东西:

http://localhost/list/folder1/folder2/
http://localhost/list/folder1/folder2/folder3/

2 个答案:

答案 0 :(得分:2)

我无法测试它,但AutoIndex包含一个AutoIndexBlueprint,所以我想知道你是否可以用它来收起它:

# bp.py
from flask import Blueprint
from flask.ext.autoindex import AutoIndexBlueprint
auto_bp = Blueprint('auto_bp', __name__)
AutoIndexBlueprint(auto_bp, browse_root='/tmp')

然后在您的应用上注册:

from bp import auto_bp
app.register_blueprint(auto_bp, url_prefix='/list')

答案 1 :(得分:1)

这对我有用:

files_index = AutoIndex(app, os.path.curdir + '/app/files', add_url_rules=False)
# Custom indexing
@app.route('/files')
@app.route('/files/<path:path>')
def autoindex(path='.'):
    return files_index.render_autoindex(path)

来自https://github.com/sublee/flask-autoindex/issues/16