如果不存在,Django会创建userprofile

Joh*_*ohn 18 django

request.user.get_profile()在我的代码中使用了很多地方.但是,并非所有用户都拥有与其帐户相关联的用户个人资料.有没有什么方法可以在调用时自动创建用户配置文件,request.user.get_profile()如果他们没有用户配置文件而不必更改我的每个request.user.get_profile()电话.也许使用信号或其他东西.

我遇到的问题是我使用单点登录登录,所以如果有人登录到另一个系统,然后进入我的网站,他们就会登录但是没有创建用户配置文件(我在他们登录时创建用户配置文件)在).

Man*_*dan 22

通常在创建用户实例后立即创建用户配置文件对象.这可以使用信号轻松完成.

我遇到的问题是我使用单点登录登录,所以如果有人登录到另一个系统,然后进入我的网站,他们就会登录但是没有创建用户配置文件(我在他们登录时创建用户配置文件)在).

显然在用户创建时使用信号对您不起作用.完成您尝试执行的操作的一种方法是request.user.get_profile()使用自定义函数替换调用.说get_or_create_user_profile(request).此函数可以尝试检索用户的配置文件,然后如果不存在则动态创建一个.

例如:

def get_or_create_user_profile(request):
    profile = None
    user = request.user
    try:
        profile = user.get_profile()
    except UserProfile.DoesNotExist:
        profile = UserProfile.objects.create(user, ...)
    return profile
Run Code Online (Sandbox Code Playgroud)