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