0

ユーザーが一定時間非アクティブかどうかを確認する方法はありますか? たとえば、Twitter は、一定時間操作を行わないと、ユーザーにメールを送信します。ユーザーが 30 日間非アクティブである場合に、「こんにちはユーザー、友達が投稿しているものをチェックしてください」というメールが送信される同様の機能を実装したいと思います。これを実装するにはどうすればよいですか?

4

4 に答える 4

1

ユーザーが最後にログインした時刻を確認し、日数が 30 日を超えている場合は電子メールを送信する管理コマンドを作成できます。(これを毎日実行する cron として実装できます)

import datetime
from django.core.management.base import BaseCommand

def compute_inactivity():
    inactive_users = User.objects.filter(last_login__lt=datetime.datetime.now() - datetime.timedelta(months=1))
    #send out emails to these users

class Command(BaseCommand):

    def handle(self, **options):
       compute_inactivity()

「アクティビティ」を定義する他の基準がある場合は、それに基づいてクエリセットをフィルタリングできます。

于 2013-05-28T16:31:48.837 に答える
1

さて、あなたに役立つかもしれないフィールドがありますdjango.contrib.auth.models.Userlast_login

好きな場所でlast_login日付を確認するUserと、彼があなたのサイトからどれくらい離れているかがわかります.

お役に立てれば!

于 2013-05-28T16:34:00.057 に答える
0

karthikr の回答と Aidas Bendoraitis の提案を読んだ後、以下に修正ソリューションを書きました。__lt リッチ比較演算子を使用する代わりに __eq 演算子を使用することを除いて、Karthikr の回答と非常によく似ています。

import datetime
from django.core.management.base import BaseCommand

def compute_inactivity():
    inactive_users = User.objects.filter(last_login__eq=datetime.datetime.now() - datetime.timedelta(months=1))
    #send out emails to these users

class Command(BaseCommand):

def handle(self, **options):
    compute_inactivity()
于 2013-05-29T21:44:06.173 に答える
0

私のアプローチは、最後のログインから 30 日が経過したときに正確にユーザーに通知を送信することです。このためには、管理コマンドを作成し、毎日 cron ジョブとして実行する必要があります。

import datetime
from django.core.management.base import BaseCommand

def compute_inactivity():
    a_month_ago = datetime.datetime.now() - datetime.timedelta(days=30)
    inactive_users = User.objects.filter(
        last_login__year=a_month_ago.year,
        last_login__month=a_month_ago.month,
        last_login__day=a_month_ago.day,
        ) 
    #send out emails to these users

class Command(BaseCommand):
    def handle(self, **options):
        compute_inactivity()
于 2013-05-30T22:48:49.477 に答える