在我的Django站点上,我想在用户登录站点时创建一个对象.我在互联网上搜索了它,我决定在context_processors.py中编写一个方法.所以我写了;
def check_online_status(request):
user_status = None
if request.user.is_authenticated():
user_status = UserStatus.objects.create(user_id=request.user.id)
user_status.status_type = "online"
user_status.save()
return {
'user_status': user_status,
}
Run Code Online (Sandbox Code Playgroud)
这是问题所在; 我的check_online_status()方法在每个请求中被触发但我想立即触发我的方法,只有当用户登录时.
你能帮帮我吗?
小智 5
我认为你要找的是一个信号,特别是一个auth信号.这些已在django中提供.
https://docs.djangoproject.com/en/dev/ref/contrib/auth/#module-django.contrib.auth.signals
from django.contrib.auth.signals import user_logged_in
def set_status_online(sender, user, request, **kwargs):
user_status = UserStatus.objects.create(user_id=request.user.id)
user_status.status_type = "online"
user_status.save()
user_logged_in.connect(set_status_online)
Run Code Online (Sandbox Code Playgroud)