鍍金池/ 問答/Python  網(wǎng)絡(luò)安全/ 用Python如何創(chuàng)建網(wǎng)站目錄樹?

用Python如何創(chuàng)建網(wǎng)站目錄樹?

我的數(shù)據(jù)結(jié)構(gòu)是列表,用列表來表示網(wǎng)站的目錄結(jié)構(gòu),如下圖這樣
['http://example.webscraping.com/', ['places', ['default', ['haha', ['fuck']], ['view', ['afghanistan-1']]]], ['bitch', ['default', ['haha', ['fuck']]]]]

圖片描述

現(xiàn)在我想利用bottle或者jinja2之類的框架里面自帶的模板功能生成目錄樹保存在.html里,HTML的樣式我都有模板了,就是生成目錄樹這塊不知道怎么寫,應(yīng)該要用到遞歸吧?請問這個有什么思路或者有沒有現(xiàn)成的代碼可以參考下的?

回答
編輯回答
悶騷型

如果生成ol/li標簽的話,可以定義如下的函數(shù)通過遞歸來實現(xiàn)

def f(tree):
    return '<ol>%s</ol>' % (''.join([f(i) if isinstance(i, list) else ('<li>%s</li>' % i) for i in tree]))
2017年1月26日 23:04
編輯回答
青檸

用macro就行了啊。

{% macro render_tree(tree) %}
    {% for sub in tree %}
        {% if sub.sort %}
            <ol>{{ render_tree(sub) }}<ol>
        {% else %}
            <li>{{ sub }}</li>
        {% endif %}
    {% endfor %}
{% endmacro %}

<ol>{{ render_tree(tree) }}</ol>
2018年2月3日 04:16
編輯回答
尛曖昧

自問自答……jinja2的模板語法里for這個語法自帶了一個recursive關(guān)鍵字,結(jié)合loop函數(shù)可以實現(xiàn)遞歸

2017年4月6日 03:37