python - 使用 flask 列出目录中的文件

标签 python flask

我想列出目录和子目录中的文件。我用过this answer有列表,但项目是不可点击的,所以我想在文件名和它们的位置之间添加一个链接。我尝试用这样的东西修改模板:

<!doctype html>
<title>Path: {{ tree.name }}</title>
<h1>{{ tree.name }}</h1>
<ul>
{%- for item in tree.children recursive %}
    <li><a href="{{ item.name }}">{{ item.name }}</a>
    {%- if item.children -%}
        <ul><a href="{{ loop(item.children) }}">{{ loop(item.children) }}</a></ul>
    {%- endif %}</li>
{%- endfor %}
</ul>

但是不行,链接不好。鉴于我想要一个指向 http://192.168.0.70:5000/static/repertory/subrepertory/file 的链接,我有一个指向 http://192.168.0.70:5000/file 的链接,这会导致 404。有人可以帮助我吗?

最佳答案

试试这个:

<ul><a href="/static/{{ loop(item.children) }}">{{ loop(item.children) }}</a></ul>

我只是在 href=" 之后,{{ 之前直接添加了您需要的静态路径。

另一种方法是在您的 make_tree 函数中添加所需的路径部分。

编辑:

让 make_tree() 看起来像这样:

def make_tree(path):
    tree = dict(name=path, children=[])
    try: lst = os.listdir(path)
    except OSError:
        pass #ignore errors
    else:
        for name in lst:
            fn = os.path.join(path, name)
            if os.path.isdir(fn):
                tree['children'].append(make_tree(fn))
            else:
                tree['children'].append(dict(name=fn))
    return tree

然后它返回完整路径名而不仅仅是文件名。

关于python - 使用 flask 列出目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828538/

相关文章:

python - 如何找出可以在 Python 模块中导入的内容?

python - TypeError : jsonify() argument after ** must be a mapping, 未列出使用 Flask 返回的 JSON

python - 如何设置 SQLALCHEMY_DATABASE_URI?

python - 有没有办法获取通过 werkzeug(flask) 请求发送的 Immutabledict 中嵌套字典的值?

python - 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令和流输出?

python - 使用 Flask 从静态之外的目录提供文件

python - 方法不允许 flask 错误 405

python - 从 Flask 发送带有代码 401 的重定向不会重定向

python - 如何通过 Django ORM 排除查询中的两个条件?

Python MySQLdb 空选择查询虽然手动查询执行交付结果