get_user_model()函数是Django框架中的一个重要函数,它的主要作用是获取Django中用户模型(User Model),即settings.py中被定义的AUTH_USER_MODEL。
在Django中,如果要自定义用户模型(如增加字段等),需要通过继承AbstractBaseUser和BaseUserManager类来实现。通过get_user_model()函数,我们可以获取到AUTH_USER_MODEL所指向的用户模型。
该函数通常用于在Django应用程序中创建/引用用户模型的场景,一般放在models.py文件中的外部导入部分,如下所示:
from django.contrib.auth import get_user_model
User = get_user_model()
通过上述代码,我们可以在不知道用户模型类名的情况下,获取到用户模型类,并实例化其对象进行操作。
以下是两个实例:
- 在创建某个用户关联的信息模型时,需要用到该用户模型的主键,可以通过get_user_model()获取
from django.db import models
from django.contrib.auth import get_user_model
User = get_user_model()
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
age = models.IntegerField()
# 其他字段...
- 在视图函数中获取当前已登录的用户对象
from django.contrib.auth import get_user_model
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
User = get_user_model()
user_id = request.session.get('user_id')
if not user_id:
return HttpResponse('请先登录')
user = User.objects.get(id=user_id)
return render(request, 'index.html', {'username': user.username})
在上述代码中,我们通过get_user_model()获取了用户模型类,并通过查询session中存储的用户id获取当前已登录用户对象。最后将用户名传递到模板中展示。