在HTML页面上按原样显示文件

时间:2011-08-02 14:50:33

标签: python html web.py

我正在为我的项目使用webpy框架。我想从我的webpy程序传递一个文件并将其显示在html页面上(文件可能是任何文本文件/程序文件)。我使用webpy程序中的以下函数传递了一个文本文件。

class display_files:
    def GET(self):
        wp=web.input()
        file_name=wp.name
        repo_name=wp.repo
        repo_path=os.path.join('repos',repo_name)
        file_path=os.path.join(repo_path,file_name)
        fp=open(file_path,'rU')             #reading file from file path
        text=fp.read()                      #no problem found till this line.
        fp.close()            
        return render.file_display(text) #calling file_display.html 

当我尝试从'file_display.html'显示文件(此处为'text')时,它会连续显示而不识别换行符。这是我的html文件。

$def with(content)
<html>
<head>
    <meta http-equiv="Content-Type" content="text/string;charset=utf-8" >
    <title>File content</title>
</head>
<body>
    <form name="file_content" id="file_content" methode="GET">
        <p> $content</p>
    </form>
</body>
<html>

如何在html页面中显示文件。

2 个答案:

答案 0 :(得分:0)

看起来您可能需要全局替换任何&lt;或者&gt;与&amp; lt;或&amp; gt;分别为:

http://jsfiddle.net/BaULp/

答案 1 :(得分:0)

HTML将空白字符数量视为单个空格。如果您显示的文件包含以下文本:

line one
  line two with indent

呈现的file_display.html将包含此HTML:

<p> line one
  line two with indent</p>

但是,换行符和两个空格将被视为一个空格,在浏览器中它将如下所示:

line one line two with indent

The pre element告诉浏览器其中的文本已预先格式化,因此应保留换行符和空格。因此,您的模板应如下所示:

<form name="file_content" id="file_content" methode="GET">
    <pre>$content</pre>
</form>

至于Joseph的建议,web.py模板系统将为您处理转义。如果您的文件包含<>等字符,则会将其替换为&lt;&gt;