我想知道当用户模型扩展/子类化并且这个结果用户模型在多个应用程序之间共享和使用时,常见的项目/应用程序结构是什么。
我想在多个应用中引用相同的用户模型。 我还没有构建登录界面,所以我不确定它应该如何组合在一起。
想到以下内容:
project.loginapp.app1
project.loginapp.app2
这种情况有通用模式吗? 登录最好由“登录应用程序”处理吗?
与这个问题类似,但更具体。 django application configuration
更新
在上面阐明了我的用例。 我想向现有的身份验证用户模型添加字段(扩展或子类?)。然后在多个应用中引用该模型。
请您参考如下方法:
为什么要扩展用户?请澄清。
如果您要添加有关用户的更多信息,则无需推出自己的用户和身份验证系统。 Django 的版本非常可靠。用户管理位于 django.contrib.auth。
如果需要自定义存储用户的信息,首先定义一个模型如
class Profile(models.Model):
...
user = models.ForeignKey("django.contrib.auth.models.User", unique=True)
然后设置
AUTH_PROFILE_MODULE = "appname.profile"
在你的 settings.py 中
设置这个的好处是允许你在你的 View 中使用这样的代码:
def my_view(request):
profile = request.user.get_profile()
etc...
如果您尝试为用户提供更多的身份验证方式,您可以添加一个身份验证后端。扩展或重新实现 django.contrib.auth.backends.ModelBackend 并将其设置为 您在 settings.py 中的 AUTHENTICATION_BACKENDS。
如果您想使用不同于 django 提供的权限或组概念,没有什么可以阻止您。 Django 仅在 django.contrib.admin(据我所知)中使用了这两个概念,您可以根据需要自由使用其他概念来处理这些主题。
