7

我想列出目录和子目录中的文件。我已经使用这个答案来获得列表,但是这些项目是不可点击的,所以我想在文件名称和它们的位置之间添加一个链接。我尝试使用以下内容修改模板:

<!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>

但它不起作用,链接不好。Weareas 我想要一个链接http://192.168.0.70:5000/static/repertory/subrepertory/file,我有一个链接http://192.168.0.70:5000/file,导致 404。有人可以帮助我吗?

4

1 回答 1

5

尝试这个:

<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

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

于 2013-07-24T08:49:53.503 回答