python flask的html选项卡拆分
我有以下代码: content.pypython 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 =
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
- Ubuntu10.1.iso
- Ubuntu10.2.iso
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);