使用 web.py 形式显示来自 PostgreSQL 数据库的密码

Display password from PostgreSQL database using web.py form

我正在玩 PostgreSQL 和 web.py,我注意到如果我在数据库中有用户名和密码,并且密码可能包含 string.printable 的成员的特殊字符, 然后当我想通过 web.py 模板将查询的密码打印到浏览器时,字符转义出了点问题,密码不想显示。相反,浏览器会提供下载包含密码的文本文件(没有文件扩展名)。

在我的 Python 文件中:

class login:
    ...
    def POST(self):
        ...
        cursor.execute("SELECT password FROM tbl WHERE username = %s", (f['username'].value, ))
        realpassword = cursor.fetchone()
        realpassword = realpassword[0]
        ...
        return realpassword

密码在下载的文本文件中正确显示,但如何在网页上以文本形式显示密码?

Python string.printable 包括垂直制表符 \x0b 和换页符 \x0c,它们都不是浏览器的朋友。浏览器假定他们正在接收文件并提供下载它。

(string.printable 与 ASCII 不同。)

而不是 return 原始 realpassword、return repr(realpassword)。内置 repr() returns a "string containing a printable representation...",转义控制字符。

>>> import string
>>> print string.printable[-20:]
=>?@[\]^_`{|}~  



>>> print repr(string.printable[-20:])
'=>?@[\]^_`{|}~ \t\n\r\x0b\x0c'