Как сохранить время последнего выхода пользователя из системы - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу сохранить время последнего выхода пользователей из системы. Моя идея заключалась в том, чтобы добавить его в модель профиля пользователя.Я использую Django 1.11.15

Пример:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    ...
    last_logout = models.DateTimeField(blank=True, null=True) 

ниже показано, как я создал свою модель профиля только для справки

def signup(request):
    if request.method == 'POST':
        form = UserCreateForm(request.POST or None)
        if form.is_valid():
            new_user = form.save()
            Profile.objects.create(user=new_user)
            return redirect('accounts:edit_profile')
    else:
        form = UserCreateForm()
    context = {'form': form}
    return render(request, 'accounts/signup.html', context)

Ниже приведено то, что я намерен сделатьделать.Это правильный путь.Я хочу добавить в метод django по умолчанию выход / выход из системы. Я не уверен, называется ли он signout или logout

class LoggedOut(TemplateView):
    template_name = 'logged_out.html'
    def signout(self):
        """logout user """
        self.request.user.profile.last_logout = datetime.now()
        self.request.user.profile.save()

Мои URL

url(r'^loggedout/$', views.LoggedOut.as_view(), name='loggedout'),

1 Ответ

0 голосов
/ 18 декабря 2018

Для этой цели вы можете использовать сигнал Django logout .

from django.contrib.auth.signals import user_logged_in, user_logged_out
from django.dispatch import receiver

@receiver(user_logged_out)
def sig_user_logged_out(sender, user, request, **kwargs):
     user.profile.last_logout = datetime.now()
     user.profile.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...