我正在嘗試通過添加自定義用戶模型來修改 Django 的內置身份驗證系統。自定義模型在名為 的應用程式中定義accounts:
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.conf import settings
# Create your models here.
COUNTRIES = settings.COUNTRY_CHOICES
class CustomUser(AbstractUser):
zip_code = models.PositiveSmallIntegerField(blank=True, null=True)
city = models.CharField(blank=True, null=True, max_length=64)
address_street = models.CharField(blank=True, null=True, max_length=64)
address_number = models.CharField(blank=True, null=True, max_length=32)
country = models.CharField(blank=True, null=True, choices=COUNTRIES, max_length=8)
我以這種方式更新了settings.py檔案:
AUTH_USER_MODEL = "accounts.CustomUser"
我添加accounts為已安裝的應用程式:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'accounts',
'store',
'cart',
]
當我嘗試python manage.py makemigrations在終端中運行命令以應用對用戶模型 Django 所做的更改時拋出此錯誤:
Traceback (most recent call last):
File "C:\Users\uhlar\Dev\ecommerce\manage.py", line 22, in <module>
main()
File "C:\Users\uhlar\Dev\ecommerce\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
utility.execute()
File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\core\management\__init__.py", line 386, in execute
settings.INSTALLED_APPS
File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\conf\__init__.py", line 87, in __getattr__
self._setup(name)
File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\conf\__init__.py", line 74, in _setup
self._wrapped = Settings(settings_module)
File "C:\Users\uhlar\.virtualenvs\ecommerce-vU6zMECh\lib\site-packages\django\conf\__init__.py", line 183, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "C:\Users\uhlar\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\uhlar\Dev\ecommerce\config\settings.py", line 149, in <module>
AUTH_USER_MODEL = accounts.CustomUser
NameError: name 'accounts' is not defined
該錯誤不僅限于accounts應用程式,無論我嘗試在哪個應用程式中定義CustomUser模型,我仍然得到它。
如果有人知道是什么導致了問題,請幫助我解決它。
uj5u.com熱心網友回復:
AUTH_USER_MODEL設定 [Django-doc]應該是一個字串,而不是一個(限定)名稱,所以:
# settings.py
# …
# string literal ?? ??
AUTH_USER_MODEL = 'accounts.CustomUser'
uj5u.com熱心網友回復:
正如威廉所說,您需要AUTH_USER_MODEL將內部設定更新settings.py為 accounts.CustomerUser模型。此外,您必須手動更新架構,因為當您第一次運行遷移時,Django 將為auth.User多個外鍵等使用默認值。請參閱此處的檔案以更改用戶中間專案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/497991.html
標籤:Python django django 用户 django 设置 django 应用程序
上一篇:如何從后端傳達完成百分比到前端
