django如何在post-save中访问当前登录用户信息
时间: 2024-03-10 14:48:10 浏览: 31
在 Django 中,可以通过 `request.user` 来访问当前登录用户信息,但是在 `post-save` 信号中无法直接获取 `request` 对象。因此,我们可以考虑在 `post-save` 信号中传递一个 `user` 参数,来表示当前登录用户信息。具体操作可以参照以下步骤:
1. 在视图函数中获取当前登录用户信息,并将其传递给 `post-save` 信号。
```python
from django.contrib.auth.decorators import login_required
from django.dispatch import receiver
from django.db.models.signals import post_save
from django.contrib.auth import get_user_model
User = get_user_model()
@login_required
def my_view(request):
# 获取当前登录用户信息
user = request.user
# 调用 post_save 信号,传递 user 参数
post_save.send(sender=User, user=user)
```
2. 在 `post-save` 信号的接收函数中,可以通过 `kwargs` 参数来获取传递的 `user` 参数,从而访问当前登录用户信息。
```python
@receiver(post_save, sender=User)
def my_handler(sender, **kwargs):
# 获取传递的 user 参数
user = kwargs.get('user')
# 访问当前登录用户信息
print(user.username)
```
注意:以上代码只是一个示例,具体实现要根据实际业务逻辑来调整。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)