मेरे Django ऐप में, जब उपयोगकर्ता लॉग इन करता है और उपयोगकर्ता लॉग आउट होने पर उन्हें चलाना बंद कर देता है, तो मुझे कुछ आवधिक पृष्ठभूमि वाले काम शुरू करने की आवश्यकता होती है, इसलिए मैं एक सुरुचिपूर्ण तरीके की तलाश कर रहा हूं
- एक उपयोगकर्ता लॉगिन / लॉगआउट के बारे में सूचित करें
- क्वेरी उपयोगकर्ता लॉगिन स्थिति
मेरे दृष्टिकोण से, आदर्श समाधान होगा
- प्रत्येक द्वारा भेजा गया एक संकेत
django.contrib.auth.views.login
और... views.logout
- एक विधि
django.contrib.auth.models.User.is_logged_in()
, के अनुरूप... User.is_active()
या... User.is_authenticated()
Django 1.1.1 के पास ऐसा नहीं है और मैं स्रोत को पैच करने और इसे जोड़ने के लिए अनिच्छुक हूं (यह सुनिश्चित नहीं है कि यह कैसे करना है, वैसे भी)।
एक अस्थायी समाधान के रूप में, मैंने एक is_logged_in
बूलियन फ़ील्ड को UserProfile मॉडल में जोड़ा है जो डिफ़ॉल्ट रूप से साफ़ हो जाता है, पहली बार उपयोगकर्ता द्वारा लैंडिंग पृष्ठ को हिट किया जाता है (द्वारा परिभाषित)LOGIN_REDIRECT_URL = '/'
) सेट और बाद के अनुरोधों में क्वियर किया जाता है। मैंने इसे UserProfile में जोड़ा है, इसलिए मुझे केवल उस उद्देश्य के लिए अंतर्निहित उपयोगकर्ता मॉडल से व्युत्पन्न और अनुकूलित करने की आवश्यकता नहीं है।
मुझे यह समाधान पसंद नहीं है। यदि उपयोगकर्ता ने लॉगआउट बटन को स्पष्ट रूप से क्लिक किया है, तो मैं ध्वज को साफ़ कर सकता हूं, लेकिन अधिकांश समय, उपयोगकर्ता केवल पृष्ठ छोड़ देते हैं या ब्राउज़र को बंद कर देते हैं; इन मामलों में झंडा साफ करना मेरे लिए सीधे तौर पर उचित नहीं है। इसके अलावा (कि बल्कि डेटा मॉडल स्पष्टता nitpicking, हालांकि), is_logged_in
UserProfile में नहीं है, लेकिन उपयोगकर्ता मॉडल में है।
क्या कोई वैकल्पिक तरीकों के बारे में सोच सकता है?