Có cách nào để đếm số lượng đăng nhập django của họ không? Trường last_login của auth_user được cập nhật với mỗi lần đăng nhập. Chúng tôi có thể sử dụng trường đó để đếm số lần đăng nhập của một người dùng cụ thể không?đếm số lần đăng nhập theo người dùng cụ thể django?
Trả lời
Vâng, theo nghĩa nào đó. Bạn sẽ cần một trường trong mô hình UserProfile
của ứng dụng để giữ số lượng đăng nhập hoặc một mô hình riêng biệt để lưu trữ toàn bộ lịch sử đăng nhập. Sau đó, thêm trình xử lý tín hiệu cho các cập nhật last_login và ghi lại chúng trong một mô hình mà bạn chọn. Dưới đây là ví dụ của tôi:
from django.db import models, signals
from django.contrib.auth.models import User
class UserLogin(models.Model):
"""Represent users' logins, one per record"""
user = models.ForeignKey(user)
timestamp = models.DateTimeField()
def user_presave(sender, instance, **kwargs):
if instance.last_login:
old = instance.__class__.objects.get(pk=instance.pk)
if instance.last_login != old.last_login:
instance.userlogin_set.create(timestamp=instance.last_login)
signals.pre_save.connect(user_presave, sender=User)
Ngoài ra còn có một 'user_logged_in' báo hiệu rằng sẽ làm các trick với ra sự cần thiết để kiểm tra thông tin đăng nhập cuối cùng, vv
class UserLogin(models.Model):
"""Represent users' logins, one per record"""
user = models.ForeignKey(user)
timestamp = models.DateTimeField()
from django.contrib.auth.signals import user_logged_in
def update_user_login(sender, user, **kwargs):
user.userlogin_set.create(timestamp=timezone.now())
user.save()
user_logged_in.connect(update_user_login)
Tôi đã thêm bit này vào mô hình UserProfile của mình, nhưng nó dường như không được kích hoạt khi đăng nhập người dùng (bảng account_userlogin được tạo ra) bất kỳ ý tưởng nào? –
này là làm thế nào tôi đã làm (sử dụng django 1.7), tương tự như Guy Bowden trả lời:
from django.contrib.auth.models import User
from django.contrib.auth.signals import user_logged_in
class LoginUpdate(models.Model):
date_updated = models.DateTimeField(auto_now_add=True, null=True)
action_type = models.CharField(max_length=5)
action_user = models.ForeignKey(User, null=True, blank=True)
def update_user_login(sender, **kwargs):
user = kwargs.pop('user', None)
LoginUpdate.objects.create(action_type="Login", action_user=user)
user_logged_in.connect(update_user_login, sender=User)
Sau đó bạn có thể đếm số lần đăng nhập, theo quan điểm của bạn.
Cảm ơn, tôi đã thực hiện nhưng tôi bị kẹt ở cách đếm số lượng thông tin đăng nhập và hiển thị chúng trong quản trị viên. Tôi có nên làm việc trong admin.py, views.py, models.py? (django beginnner) ở đây) – juminet
@juminet, phương pháp tôi đã cung cấp, CHỈ tiết kiệm 'date_updated', 'action_type' và 'action_user', trong cơ sở dữ liệu của chúng tôi, sau đó bạn có thể đếm 'action_type' cho một người dùng cụ thể, sử dụng bộ truy vấn django (https: // docs .djangoproject .com/vi/1.11/ref/models/querysets/# count). Vì vậy, queryset của bạn sẽ giống như thế này: LoginUpdate.objects.filter (action_type = "Đăng nhập", action_user = SPECIFIC_USER) .count() –
Bạn có thể sử dụng django-timeStamps để lưu trữ thời gian đăng nhập cao. Một công cụ trọng lượng nhẹ đơn giản.
- 1. Theo dõi người dùng đã đăng nhập
- 2. Cách haskell để chấp nhận người dùng nhập vào một người dùng nhập số lần?
- 3. Phiên người dùng trong suốt trên một số trang web (đăng nhập một lần + đăng xuất một lần)
- 4. Tìm hiểu người dùng hiện đang đăng nhập ở Django
- 5. Lấy Người dùng Nhập để tạo Người dùng ở Django
- 6. lập trình đăng xuất người dùng "cụ thể"
- 7. Theo dõi các lần đăng nhập bằng cookie PHP
- 8. Lift theo dõi một người dùng đăng nhập
- 9. Cách nhận id người dùng hiện đang đăng nhập của người dùng ở Django?
- 10. Lọc người dùng có thể đăng nhập bằng Devise
- 11. Cách giữ người dùng SecureSocial đăng nhập?
- 12. Người dùng ẩn danh theo dõi Django
- 13. Trang khác cho người dùng đã đăng nhập và người dùng chưa đăng nhập tại gốc
- 14. Không thể đăng nhập vào django admin sau khi tạo người dùng siêu với mô hình người dùng tùy chỉnh
- 15. Firebase - Đếm số người dùng trực tuyến
- 16. Khóa người dùng sau quá nhiều lần đăng nhập không thành công
- 17. Làm thế nào để tự động đăng nhập người dùng sau khi đăng ký trong django
- 18. "immediate_failed" - Không thể automatially đăng nhập người dùng
- 19. Rspec capybara Người dùng không thể đăng nhập
- 20. Nhận id người dùng đã đăng nhập
- 21. Nhận facebook Việc đăng nhập người dùng
- 22. Bao gồm người dùng đăng nhập django trong lỗi django Traceback
- 23. người dùng với twitter đăng nhập Authenticate
- 24. Cho phép người dùng chỉ nhập các thẻ cụ thể
- 25. ASP.NET | Xác thực biểu mẫu | TẤT CẢ người dùng đã đăng nhập (danh sách tất cả người dùng hoặc số)
- 26. Cách chuyển hướng người dùng đến một url cụ thể sau khi đăng ký trong đăng ký django?
- 27. django: hiển thị số người dùng nhóm đếm trong quản trị
- 28. Đăng xuất người dùng Django bằng xác thực từ xa
- 29. Buộc người dùng cục bộ thay đổi mật khẩu tại lần đăng nhập tiếp theo với C#
- 30. Đăng nhập bằng Facebook theo cách lập trình bằng tên người dùng/mật khẩu
cảm ơn hoạt động của nó một cách hoàn hảo. – Sujit
Đó là vấn đề về phong cách, nhưng bạn sẽ đặt nó ở đâu trong django (tệp gì?). Bạn có tạo ứng dụng mới không? Cảm ơn. – Roger
'UserProfile' chuyển đến' models.py', trình xử lý tín hiệu đi tới 'listeners.py', cả trong ứng dụng chính của bạn. –