使用Python Flask在我的html中显示.txt文件

时间:2016-10-25 18:03:06

标签: python flask

我想在log.html中显示我的log.txt。 出于某种原因,我的页面完全空白。 而且我无法从我的文件中看到任何内容。 代码:

def log():
    with open("logs.txt", "r") as f:
        content = f.read()
    return render_template('log.html', content=content)

HTML LOG模板:

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Log</title>
    <link rel="stylesheet" href="/static/styles/nav.css" />
     <link rel="stylesheet" href="/static/styles/basiclayout.css" />
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<style>


</style>
<body>
<ul class="nav">
    <li ><a href="{{ url_for('hello_world') }}" >Home</a></li>
    <li ><a href="{{ url_for('notepad') }}">Notepad</a></li>
    <li ><a href="{{ url_for('explorer') }}">Explorer </a></li>
    <li class="active"><a href="{{ url_for('log') }}">Log </a></li>
    <li ><a href="{{ url_for('upload') }}">Upload </a></li>
    <li ><a href="{{ url_for('uploads') }}">Uploads </a></li>
    <li ><a href="{{ url_for('logout') }}">Logout</a></li>



</ul>
<div class="alert">
    {% for message in get_flashed_messages() %}
       {{ message }}
    {% endfor %}
        </div>

    <pre>{{ content }}</pre>


</body>
</html>

现在添加了我的HTML模板。

3 个答案:

答案 0 :(得分:3)

 return Response(f.read(), mimetype='text/plain')

但你真的想要使用像logstash这样的东西......

答案 1 :(得分:0)

有两个文件,一个是“ file.py”,而相应的HTML文件是从模板文件夹中调用的。

import sys
from flask import Flask, render_template, redirect, url_for, request
app = Flask(__name__, template_folder="/root/templates")
def search():
with open("test","r") as file:
     content = file.readlines()
     print(content)

return render_template("file2.html", content = content)
if __name__ == "__main__":
    app.run(debug=True)
  1. File2.html:

    不确定如何附加HTML文件。附上屏幕截图。请参阅enter image description here

答案 2 :(得分:0)

如果让log读取文件backwards以便访问last log first,也许会更好。

pip3 install file-read-backwards

例如,我将向后显示此代码:

根据您的情况,有必要将app.py替换为logs.txt

from flask import Flask, render_template
from file_read_backwards import FileReadBackwards

app = Flask(__name__, template_folder="template")

with FileReadBackwards("app.py") as f:
    # getting lines by lines starting from the last line up
    b_lines = [ row for row in f ]

@app.route('/', methods=["GET", "POST"])
def index():
    return render_template('index.html', b_lines=b_lines)

if __name__ == "__main__":
    app.run(debug=True)

放入您的log.html

<br>
&nbsp;&nbsp;Description:
<br>
<textarea id="stackoverflow" name="stackoverflow_review" rows="35" cols="55">   
   {% for line in b_lines %}
      {{ line }}
   {% endfor %}
</textarea>

输出:

enter image description here

对于您而言,logs.txt文件中的最新更改将首先显示。