Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python flask的html选项卡拆分_Python_Html_Css_Flask - Fatal编程技术网

python flask的html选项卡拆分

python flask的html选项卡拆分,python,html,css,flask,Python,Html,Css,Flask,我有以下代码: content.py import fnmatch import os matches = [] for root, dirnames, filenames in os.walk("Z:\\"): for filename in fnmatch.filter(filenames, '*.iso'): matches.append(os.path.join(filename)) new_list = matches result_string =

我有以下代码:

content.py

    import fnmatch
import os
matches = []
for root, dirnames, filenames in os.walk("Z:\\"):
    for filename in fnmatch.filter(filenames, '*.iso'):
        matches.append(os.path.join(filename))

new_list = matches

result_string = """<HTML>
<body>
    <h1>ISO LIST</h1>
    <table>\n"""
for i in new_list:
    result_string += "        <tr>\n            "
    for j in i:
        result_string += "<td>%s</td>" %j
    result_string += "\n        </tr>\n"
result_string += """    </table>
</body>
</HTML>"""
display = open("table.html", 'w')
display.write(result_string)
display.close()

##for item in matches:
    ##print(item)
代码有效,但我得到以下列表:

ISO LIST

Ubuntu10.1.iso
WindowsServer2016.iso
Ubuntu10.2.iso
是否可以使用“简单”排序?所以我会:

ISO LIST

Ubuntu10.1.iso
Ubuntu10.2.iso
WindowsServer2016.iso
更完美的是:

ISO LIST

UBUNTU:
Ubuntu10.1.iso
Ubuntu10.2.iso

WindowsServer:
WindowsServer2016.iso
所以它们出现在不同的选项卡中

我已经试过一些东西了,但没用

问候,,
Ward

这几乎就是基本的Python。如果您需要在Python代码中构造HTML(例如,学习如何使用Jinja2呈现模板会更好、更强大!)

Python代码:(更改了列表,使其未排序)

new_list=['Windows.Server.2016.iso','Ubuntu.10.1.iso','Ubuntu.10.2.iso']
表\u行=['\t\t%s'%i for i in sorted(新\u列表)]
结果\u字符串='\n'。加入([
'',
'',
“\tISO列表”,
“\t”,
“\n”。联接(表_行),
“\t”,
'',
''
])
打印结果\u字符串:

<html>
<body>
    <h1>ISO LIST</h1>
    <table>
        <tr><td>Ubuntu.10.1.iso</td></tr>
        <tr><td>Ubuntu.10.2.iso</td></tr>
        <tr><td>Windows.Server.2016.iso</td></tr>
    </table>
</body>
</html>

ISO列表
Ubuntu.10.1.iso
Ubuntu.10.2.iso
Windows.Server.2016.iso

Flasky的方法是使用。创建一个HTML文件并用于显示数据。大概是这样的:

app.py 模板/ISOs.html

标题
ISO列表
{数据%中的键为%1}
{{key}}:
    {x在数据[key]%中的百分比}
  • {{x}
  • {%endfor%}

{%endfor%}
结果: ISO列表 Windows服务器:
  • WindowsServer2016.iso
Ubuntu:
  • Ubuntu10.1.iso
  • Ubuntu10.2.iso
编辑: 没有意识到这个列表必须更新。不需要重新加载页面,只需添加一些JavaScript即可在一个页面上点击您的端点。请注意,我已将app.py和ISOs.html都更改为使用JS。你可能应该读一下这篇文章

JavaScript
var$isoListDiv=$(“#isoList”),
checkISOList=函数checkISOList(){
$.ajax({
url:“/”,
键入:“获取”
}).完成(功能(数据){
试一试{
JSON.parse(数据);
}捕获(e){
//显示错误
返回false;
}
设置隔离列表(数据);
}).失败(功能(jqXHR){
//显示错误
});
},setISOList=函数(数据){
var isoList=“”;
Object.keys(数据).forEach(函数(键){
isoList+=“+key+”
    ”; 对于(var x=0;x”+数据[键][x]+“”; } isoList+=“

”; }); $isoListDiv.html(isoList); }; 设置间隔(检查列表,2000年);
将有助于显示
新列表的内容
,但最终使用python函数应该很容易解决。e、 g.尝试
为i排序(新列表):
和/或
为j排序(i):
我的新列表是:
['Ubuntu.10.1.iso','Ubuntu.10.2.iso','Windows.Server.2016.iso']
,但我的table.html看起来是这样的:
iso Ubuntu.10.2.iso
为什么@PJSantoroThanks!我在代码中添加了
display=open(“table.html”,“w”)display.write(results\u string)display.close()
,现在table.html显示正确了。非常感谢!菲特勒,谢谢你的帮助。但是在我的synology中,当table.html发生更改时,我找不到重新加载烧瓶页面的方法。我想我需要ajax/php,但我不知道从哪里开始。。我现在可以通过转到来显示页面。。我找到了一种方法来刷新页面
,这样当我的table.html被Synology中的日程任务更改时。我的页面将在flask中刷新,网站可以保持在线(无需停止或启动)。抱歉,我没有意识到这是必要的。我会更新的。
new_list = ['Windows.Server.2016.iso', 'Ubuntu.10.1.iso', 'Ubuntu.10.2.iso']

table_rows = ['\t\t<tr><td>%s</td></tr>' % i for i in sorted(new_list)]

results_string = '\n'.join([
    '<html>',
    '<body>',
    '\t<h1>ISO LIST</h1>',
    '\t<table>',
    '\n'.join(table_rows),
    '\t</table>',
    '</body>',
    '</html>'
])
<html>
<body>
    <h1>ISO LIST</h1>
    <table>
        <tr><td>Ubuntu.10.1.iso</td></tr>
        <tr><td>Ubuntu.10.2.iso</td></tr>
        <tr><td>Windows.Server.2016.iso</td></tr>
    </table>
</body>
</html>
from flask import Flask, render_template

app = Flask(__name__)

def parse_key(match):
    for x, y in enumerate(match):
        if y.isdigit():
            return match[:x]

@app.route('/')
def index():
    data = {}
    matches = [
        'Ubuntu10.1.iso',
        'WindowsServer2016.iso',
        'Ubuntu10.2.iso'
    ]

    data = {parse_key(x): [y for y in matches if parse_key(y) == parse_key(x)] for x in matches}

    for key in data:
        data[key].sort()
    // check if the request is coming from JS.
    if request.is_xhr:
        return json.dumps(data)
    return render_template('ISOs.html', data=data)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>ISO List</h2>
    <div id="isoList">
        {% for key in data %}
        <h3>{{ key }}:</h3>
            <ul>
                {% for x in data[key] %}
                <li>{{ x }}</li>
                {% endfor %}
            </ul>
            <br>
        {% endfor %}
    </div>
</body>
</html>
var $isoListDiv = $('#isoList'),
    checkISOList = function checkISOList() {
    $.ajax({
        url: '/',
        type: 'GET'
    }).done(function(data) {
        try {
            JSON.parse(data);
        } catch (e) {
            // display error
            return false;
        }
        setISOList(data);
    }).fail(function(jqXHR) {
        // display error
    });
}, setISOList = function (data) {
    var isoList = "";
    Object.keys(data).forEach(function(key) {
        isoList += "<h3>" + key + "</h3><ul>";
        for (var x = 0; x < data[key].length; x++) {
            isoList += "<li>" + data[key][x] + "</li>";
        }
        isoList += "</ul><br>";
    });
    $isoListDiv.html(isoList);
};
setInterval(checkISOList, 2000);