Skip to main content
 首页 » 编程设计

python之Django 项目结构,跨应用程序共享扩展 auth "User"模型的推荐结构

2025年05月04日23cyq1162

我想知道当用户模型扩展/子类化并且这个结果用户模型在多个应用程序之间共享和使用时,常见的项目/应用程序结构是什么。

我想在多个应用中引用相同的用户模型。 我还没有构建登录界面,所以我不确定它应该如何组合在一起。

想到以下内容:

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(据我所知)中使用了这两个概念,您可以根据需要自由使用其他概念来处理这些主题。