Django

2013-02-21 31 views
8

में उपयोगकर्ता गतिविधि को संग्रहीत करना मैं किसी उपयोगकर्ता की गतिविधि को संग्रहीत करना चाहता हूं, लेकिन मुझे यकीन नहीं है कि इसे कहां स्टोर करना है। मुझे नहीं लगता कि डेटाबेस एक विकल्प है क्योंकि यह बहुत बड़ा होगा। मैं जानना चाहता हूं कि फेसबुक जैसी साइटों, ड्रॉपबॉक्स किसी विशेष उपयोगकर्ता की सभी गतिविधियों को याद रखती है। और इसे सत्रों में संग्रहीत नहीं किया जा सकता क्योंकि यह सत्र विशिष्ट नहीं बल्कि उपयोगकर्ता विशिष्ट है।Django

कृपया अपने सुझाव के साथ मेरी मदद करें।

उत्तर

6

आम तौर पर यदि आप चाहें तो ऐसी गतिविधि के लिए Django Admin Logs का उपयोग कर सकते हैं।

आम तौर पर Django मौजूदा कार्यों को बनाने, अद्यतन करने या हटाने जैसे व्यवस्थापक कार्यों का ट्रैक रखता है। इसमें निम्नलिखित संरचना है:

from django.contrib.admin.models import LogEntry 

LogEntry.objects.log_action(
          user_id = ..., 
          content_type_id = ..., 
          object_id = ..., 
          object_repr = ...., 
          change_message = ..., 
          action_flag = ... 
          ) 

मैं अपने सिस्टम में लॉगर के रूप में इसका उपयोग कर रहा हूं, और प्रत्येक क्रिया का ट्रैक रख रहा हूं। आम तौर पर, Django लॉग इन व्यवस्थापक रूपों पर किए गए संचालन को सम्मिलित, अद्यतन या हटाता है और मैं अपना हाथ लिखित दृश्य और फॉर्म क्रियाओं को लॉग करता हूं। साथ ही, आप signals का उपयोग कर लॉगिन/लॉगआउट जैसे उपयोगकर्ता संचालन को पकड़ सकते हैं।

मैंने नई क्रिया झंडे को परिभाषित किया। Django 3 झंडे का उपयोग करता है: 1 सम्मिलित करने के लिए, अद्यतन के लिए 2 और हटाने के लिए 3। मैंने अपनी सूची झंडे के साथ उस सूची का विस्तार किया।

इसका उपयोग करने का लाभ यह है कि, जैसा कि मैंने कहा था, आपको डिफ़ॉल्ट रूप से Django व्यवस्थापक रूपों और इन फ़ॉर्मों का उपयोग करके किए गए किसी भी क्रिया को संभालने की आवश्यकता नहीं है।

6

आप django-activity-stream पर देख सकते हैं जो activity streams spec का कार्यान्वयन है। यह डेटाबेस में कार्रवाइयों की एक सूची संग्रहीत करता है और उपयोगकर्ताओं/संस्थाओं को फेसबुक के समान कुछ देने की अनुमति देता है यदि आप इसमें रुचि रखते हैं।

हालांकि, जैसा कि आप उल्लेख करते हैं, यह विशाल सेट के साथ समाप्त हो सकता है डेटा जो एक पारंपरिक एकल डेटाबेस दृष्टिकोण के लिए थोड़ा सा हो सकता है। मुझे यकीन नहीं है कि ट्विटर जैसी साइटें इसके साथ कैसे निपटती हैं, लेकिन जब तक आप बहुत जल्दी स्केल करने की योजना नहीं बनाते हैं तो मानक डेटाबेस दृष्टिकोण शायद आपको थोड़ी देर तक टिकेगा।