这里有一些关于自定义用户模型的基础知识我不明白

问题描述 投票:0回答:2

我想删除一个用户。经过一番挣扎后,我最终是这样的: 视图.py

the_user = get_user_model()

@login_required
def del_user(request):
    email = request.user.email
    the_user.objects.filter(email=email).delete()
    messages.warning(request, "bruker slettet.")
    return redirect("index")

但是我真的不明白。正在排队

email = request.user.email.

为什么不是

email = request.the_user.email

这里有一些关于自定义用户模型的基础知识我不明白。这是因为用户引用的是 AbstractBaseUser 吗?

请原谅我问这个问题。

python django django-custom-user
2个回答
1
投票

request
HttpRequest
对象的实例。它代表当前收到的请求。
AuthenticationMiddleware
对发出请求的用户进行身份验证(基于 cookie 或您配置的方式)并向其添加
request.user
属性
,以便您的代码可以获取发出请求的当前用户。

你所说的

the_user
就是
User
模型类
。这是您在代码中为变量指定的任意名称。

仅供参考,

request.user
对象已经是一个完全成熟的
User
实例,它已经有一个
delete
方法
。您不需要通过
the_user
模型类再次找到同一用户,您可以这样做:

@login_required
def del_user(request):
    request.user.delete()
    messages.warning(request, "bruker slettet.")
    return redirect("index")

0
投票

.user
属性由
AutenticationMiddleware
 [Django-doc]
设置。因此,它会检查会话变量中是否有名为
_auth_user_id
的键,如果该键包含用户的主键,则它可以获取相应的用户对象(基于您选择的用户模型)。

因此,它与模型的 name 无关(顺便说一句,

the_user
不是一个好名字,因为类是用
PascalCase
编写的),名称始终是
.user
.auser
如果你想以异步方式获取它。

.user
对象也被获取lazily:只要你不需要访问
request.user
的属性,或者进行方法调用,或者其他什么,它就不会被获取。

© www.soinside.com 2019 - 2024. All rights reserved.