2013-01-15 51 views
0

我想更新django中的auth_user表的某些字段。其實我遷移一些用戶從一個網站到另一個,所以我想更新AUTH_USER table.But密碼字段,當我使用更新查詢它給了我一些錯誤django中的auth_user表的問題

有些事情我已經嘗試

values=User.objects.get(username=request.POST['username']) 
     values.password=request.POST['password'] 
     values.password.save() 

它給「統一」對象的錯誤有保存

沒有屬性」,如果我想這一個

values=User.objects.get(username=request.POST['username']).update(password=request.POST['password']) 

那麼錯誤是「用戶」對象有沒有屬性「更新」

其實我不想發送電子郵件,用戶更新他們的密碼,並重定向他們忘記密碼的頁面。 但是,無論何時用戶嘗試登錄網站,如果他的密碼不匹配,但他正確鍵入密碼,但由於遷移他的密碼不能在django中工作,那麼他輸入的密碼必須在auth_user表(加密密碼)中更新。

在兩者之間我確保此用戶是以前站點的身份驗證用戶。

所以請建議我一些方法,以便我可以在auth_user表中更新他的密碼。

回答

3

密碼在Django存儲爲SHA256哈希值,所以設置

user.password = 'new password' 

是不是一個好主意。幸運的是,django有一些方法來處理你的密碼。第二件事:

values.password.save() 

在這裏,您試圖執行保存()密碼對象的方法,它是一個字符串,而不是用戶對象。 values.save()會更好,但仍然不正確。你想要做的是這樣的:

values.set_password('new password') # Takes care of hashing 
values.save() 

More on the topic in django documentation

+0

OK告訴我一兩件事可以我使用了url重定向而不是顯示msg inb forms.py – user1746291

0

(代表OP)的

我用這個和問題解決

u = User.objects.get(username__exact='john') 
u.set_password('new password') 
u.save()