[英]Extending user models in Django saves password publicly
新創建的用戶的密碼在管理控制台模型上公開顯示。 為什么會這樣,我如何正確執行呢?
此外,我實際上無法使用Accounts_app中創建的任何新用戶登錄。 我只能使用在項目早期創建的python manage.py createsuperuser
登錄。
這是models.py
from django.contrib.auth.models import AbstractUser
class ProjectUser(AbstractUser):
def __str__(self):
return self.username
這是settings.py
PASSWORD_HASHERS = [
'django.contrib.auth.hashers.Argon2PasswordHasher',
'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
'django.contrib.auth.hashers.BCryptPasswordHasher',
'django.contrib.auth.hashers.PBKDF2PasswordHasher',
'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
]
AUTH_USER_MODEL = 'accounts_app.ProjectUser'
這是我的管理員視圖
要創建用戶,請在應用程序管理員視圖中單擊“添加用戶”。
這是apps.py文件
from django.apps import AppConfig
class AccountsConfig(AppConfig):
name = 'accounts_app'
這是admin.py文件
from django.contrib import admin
from accounts_app.models import ProjectUser
# Register your models here.
admin.site.register(ProjectUser)
盡管將ProjectUser設置為AUTH_USER_MODEL,但您已在admin中將其注冊為標准模型,而不是用戶模型。 您需要使用docs中所示的用戶admin,因為這可以對哈希進行哈希處理:
from django.contrib.auth.admin import UserAdmin
admin.site.register(ProjectUser, UserAdmin)
您需要先刪除並重新創建通過管理員生成的用戶,然后再進行更改。
首先,您想做什么,擴展或定制用戶模型?
如果要擴展...用外鍵就足夠了。 為此,Django項目建議使用OneToOneField(User)
在這種情況下,請參見下面的鏈接。
https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#extending-the-existing-user-model
另一方面,如果要自定義用戶模型,則必須在進行遷移之前執行此操作。 初始設置必須具有您的自定義設置。 您只能為用戶模型自定義創建應用。
在這種情況下,請參見下面的鏈接。
https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#substituting-a-custom-user-model
希望對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.