사용자가 특정 시간 동안 비활성 상태인지 확인하는 방법이 있습니까? 예를 들어 트위터는 일정 시간 동안 사용하지 않으면 사용자에게 이메일을 전송합니다. 사용자가 30 일 동안 비활성 상태 인 경우 "Hello User, 친구가 게시 한 내용을 확인하십시오"와 유사한 기능을 구현하고 싶습니다. 어떻게 구현할 수 있습니까?장고 사용자 비활성
답변
사용자가 마지막으로 로그인 한 시간을 확인하는 관리 명령을 작성할 수 있으며 일 수가 30보다 큰 경우 전자 메일을 보낼 수 있습니다. 당신이 "활동"을 정의하는 다른 기준이있는 경우, 당신은 당신의 검색어는 그 기반으로 필터링 할 수 있습니다
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()
(당신은 매일 실행되는 크론으로 이것을 구현할 수 있습니다).
글쎄, django.contrib.auth.models.User
은 유용 할 수도있는 last_login
필드를 가지고 있습니다.
언제든지 의 날짜를 확인하면 그가 사이트에서 얼마나 떨어져 있는지 확인할 수 있습니다.
희망이 도움이됩니다.
안녕하세요, 빠른 답장을 보내 주셔서 감사합니다. 장고 관리 페이지에 대한 정보를 모두 찾았습니다. 답변에 투표했습니다. 위의 karthikr의 답변을 확인하십시오, 그것은 내가 찾던 답 중 더 많았습니다! :) – noahandthewhale
당신이 답을 찾은 것을 기쁘게 생각합니다. 내 것은 단지 당신에게 무엇을해야하는지 제안하는 것이 었습니다. updvote 주셔서 감사합니다. –
karthikr의 답변과 Aidas Bendoraitis의 제안을 읽은 후, 아래에 수정 해결책을 작성했습니다. 그것은 대신 __lt 풍부한 비교 연산자를 사용하여 제외 Karthikr의 대답과 매우 유사의 __eq 연산자를 사용 :
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()
내 접근 방식은 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()
빠른 답장을 보내 주셔서 감사합니다. 이런 식으로 뭔가를 찾고 있었는데, 이것을 시험해보고 효과가 있는지 살펴 보려고합니다! 내가 알려 주마! – noahandthewhale
좋습니다. 알려주십시오 – karthikr
이 조건으로, 비활성 사용자는 매일 적어도 한 달이 경과하면 (cron 작업이 설정 될 때마다) 통보됩니다. '미만'조건을 확인하는 대신 '같음'조건을 확인하는 것이 좋습니다. 즉, 30 일이 경과하면 사용자가 알림을받습니다. 이 경우 –