2013-01-07 29 views
1

我試圖創建一個名爲用戶名這樣簡單的模型:Django模型中的PasswordField?

class User(models.Model): 
    username = models.CharField(max_length=100) #Id is automatically generated by Django 
    password = models.CharField(max_length=100) 

這是我試圖創建的Django模型。問題是用戶名和密碼屬性存儲爲CharField,而我想要密碼存儲爲* *或加密的形式在數據庫中。好像他們沒有像DjFord中的CharField PasswordField。什麼是最好的方式來做到這一點?

+0

您是否試圖在窗體中顯示輸入的密碼爲*或者是否要將它插入到數據庫中?由於前者,你需要使用django表單,並且將小部件添加到CharField(請看[這裏](https://code.djangoproject.com/wiki/PasswordField)),對於後者,沒有任何東西你只需要獲得密碼,將其加密並將其插入到數據庫中。 – mtndesign

+2

請不要嘗試創建自己的身份驗證。你會錯的。使用Django的內置auth庫。 –

回答

1

按照THE DOCS

password = forms.CharField( 
    widget=forms.PasswordInput(render_value=False), 
    label="Your Password" 
) 

,並因之到

<input type="password" /> 

在渲染的形式

關於您的存儲部分,你將需要存儲密碼的哈希,而不是*的列表,否則您將無法檢索它。您可以使用hashlib模塊

user.password = hashlib.sha224(user.password).hexdigest() 
user.save() 

當然你有這個實施時要注意大。以上只是一個簡單的例子,請查看文檔以進一步學習

+0

我也想在數據庫中插入。 – user1881957

+0

我該怎麼做? – user1881957

+0

已更新我的回答 –

0

Django附帶用戶模型。它在django.contrib.auth.models下。該模型具有您需要的所有功能,如果您已經有自己的產品,那麼開始創建自己的產品會很愚蠢。你還可以在django.contrib.auth.forms中創建和驗證用戶表單,比如用戶模型中的set_password方法,以及更多的東西。

+0

我想使用另一個數據庫中的另一個表。 – user1881957