2016-10-03 98 views
0

我在玩PostgreSQL和web.py,我注意到如果我在數據庫中有一個用戶名和密碼,並且密碼可能包含特殊字符, string.printable,然後當我想通過web.py模板將查詢的密碼打印到瀏覽器時,出現字符轉義出錯並且密碼不想顯示。相反,瀏覽器提供下載包含密碼的文本文件(無文件擴展名)。使用web.py表格顯示來自PostgreSQL數據庫的密碼

在我的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 

密碼正確出現在文本文件下載,但我怎麼爲網頁上的文字顯示密碼?

+0

我希望你不是真的要將密碼作爲純文本存儲在數據庫中。 – pferate

+0

是的,只是爲了說明這個問題! –

回答

1

Python string.printable包括垂直標籤\x0b和換頁\x0c,這兩者都不是瀏覽器的朋友。瀏覽器假定他們正在接收文件並提供下載。

(string.printable是不一樣的ASCII)。

代替返回原realpassword,迴歸repr(realpassword)。內置repr()返回一個「包含可打印表示的字符串...」,轉義控制字符。

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



>>> print repr(string.printable[-20:]) 
'=>[email protected][\\]^_`{|}~ \t\n\r\x0b\x0c' 
相關問題