我想列出目录和子目录中的文件。我用过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/