簡體   English   中英

Django中的auth_user表問題

[英]Issues with auth_user table in django

我想在Django中更新auth_user表的某些字段。 實際上我正在將一些用戶從一個網站遷移到另一個網站,所以我想更新auth_user表中的密碼字段。但是當我使用更新查詢時,它給了我一些錯誤

我嘗試過的一些東西

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

它給出了“ unicode”對象沒有屬性“ save”的錯誤

如果我嘗試了這個

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

那么錯誤是“用戶”對象沒有屬性“更新”

實際上,我不想發送電子郵件給用戶以更新其密碼並將其重定向到“忘記密碼”頁面。 但是,每當用戶嘗試登錄站點時,如果他的密碼不匹配,但他正確輸入了密碼,但是由於遷移,他的密碼在django中不起作用,則必須在auth_user表中更新他輸入的密碼(加密密碼)。

在兩者之間,我必須確保該用戶是先前站點的身份驗證用戶。

因此,請以某種方式建議我,以便我可以在auth_user表中更新他的密碼。

django中的密碼存儲為sha256哈希,因此設置

user.password = 'new password'

這不是一個好主意。 幸運的是,django提供了可以對您的密碼進行哈希處理的方法。 第二件事:

values.password.save()

在這里,您嘗試對密碼對象(不是字符串,而是用戶對象)執行save()方法。 values.save()會更好,但仍然不正確。 您要做的是:

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

Django文檔中有關該主題的更多信息

(代表OP)

我用了這個問題就解決了

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM