[英]Value for AUTH_USER_MODEL in Django settings file
在 Django 中,每当我们想在文件中使用名为model_name
,我们必须将该模型导入为
from app_name.models import model_name
当我们必须在项目中使用自定义用户模型作为用户模型时,我们必须在settings.py文件中指定对该模型的引用作为
AUTH_USER_MODEL = app_name.model_name
所以我的问题是为什么我们必须在settings.py文件中将AUTH_USER_MODEL的值指定为
app_name.model_name
而不是作为
app_name.models.model_name
为什么我们没有在settings.py文件中为AUTH_USER_MODEL使用提及models.py
文件的值
在启动时 django 为每个应用程序导入models
模块并注册所有Model
子类。
# Mapping of app labels => model names => model classes. Every time a
# model is imported, ModelBase.__new__ calls apps.register_model which
# creates an entry in all_models. All imported models are registered,
# regardless of whether they're defined in an installed application
# and whether the registry has been populated. Since it isn't possible
# to reimport a module safely (it could reexecute initialization code)
# all_models is never overridden or reset.
self.all_models = defaultdict(dict)
模型是不是有Python模块,而是以引用app_label
和model_name
(小写)。 查找一个模型,则是由app_label
和model_name
。
用户模型除了:
django/contrib/auth/__init__.py
:
def get_user_model():
"""
Return the User model that is active in this project.
"""
try:
return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
...
在很多情况下, app_label
也是该应用程序的模块名称,这可能会造成混淆。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.