使用 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'
我正在玩 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'