7

मैं djangoappengine का उपयोग कर रहा हूं। जब मैं एक नया उपयोगकर्ता बनाने का प्रयास करता हूं, उस उपयोगकर्ता को प्रमाणित करता हूं, और उन्हें लॉग इन करता हूं, तो मुझे निम्न त्रुटि AttributeError: 'AnonymousUser' object has no attribute 'backend' मिलती है।Django App Engine: AttributeError: 'AnonymousUser' ऑब्जेक्ट में कोई विशेषता नहीं है 'बैकएंड'

मेरे कोड सरल है और दिखाई देता है:

user = User.objects.create_user(username, username, password) 
user.set_password(password) 
user.save() 

user = django.contrib.auth.authenticate(username=username, password=password) 
django.contrib.auth.login(request, user) 

मैं केवल उत्पादन पर और कभी कभी ही निम्न त्रुटि मिलती है:

web req_create: 'AnonymousUser' object has no attribute 'backend' 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~XXXXX/1.356802202883392818/XXXX/XXX.py", line 332, in req_create 
    login(request, user) 
    File "/base/data/home/apps/s~XXXXX/1.356802202883392818/django/contrib/auth/__init__.py", line 82, in login 
    request.session[BACKEND_SESSION_KEY] = user.backend 
AttributeError: 'AnonymousUser' object has no attribute 'backend' 

मुझे यकीन है कि नहीं हूँ, लेकिन मैं एक बुरा विचार है कि यह अपवाद उच्च प्रतिकृति डेटा स्टोर और इसकी अंतिम स्थिरता के कारण है। मुझे लगता है कि authenticate() उपयोगकर्ता के मूल्य को बचाता है और login() एक प्रश्न है लेकिन उपयोगकर्ता का मूल्य अभी तक एचआरडीएस में प्रचारित नहीं हुआ है। क्या कोई यह सच होने की पुष्टि कर सकता है? यदि हां, तो यह कैसे तय किया जाएगा?

+0

कृपया ट्रेसबैक के साथ मूल त्रुटि को पीछे छोड़ दें। – Nilesh

+0

ट्रेसबैक जोड़ा गया। – speedplane

उत्तर

3

जब आप उपयोगकर्ता को सहेजते हैं तो यह स्वचालित रूप से सक्रिय नहीं होगा। कृपया AnonymousUser के लिए लिंक देखें जो कहता है कि आपका उपयोगकर्ता AnonymousUser कैसे बनता है।

तो आपको अपने आइटम को AnonymousUser के रूप में सेट करने वाले सभी आइटम सेट करना होगा। प्रमाणित करने से पहले कृपया user.is_anonymous() देखें।

+0

मुझे ऐसा नहीं लगता है। जैसा कि आप उपरोक्त कोड में देख सकते हैं, मैं उपयोगकर्ता को बनाता हूं और लॉग इन करने का प्रयास करने से पहले इसे प्रमाणित करता हूं। यह अज्ञात उपयोगकर्ता नहीं होना चाहिए। – speedplane

+0

हां लेकिन कृपया 'is_anonymous()' जांचें। जब आप उपयोगकर्ता बनाते हैं तो यह स्वचालित रूप से 'सक्रिय' नहीं होगा, इसलिए कृपया सुनिश्चित करें कि 'is_anonymous()' वापस लौटाएगा 'गलत' और 'is_authenticated() 'को' सत्य 'वापस करना होगा। – Nilesh

0

एक ही समस्या थी। लेकिन समस्या यह थी कि उपयोगकर्ता नाम लंबा था और इसे 30 वर्णों तक छोटा कर दिया गया था। जवाब मिला:

Django Register Form 'AnonymousUser' object has no attribute 'backend'

+0

यह निश्चित रूप से यह नहीं है। उपयोगकर्ता नाम इतना लंबा नहीं है। – speedplane

0

जब उपयोगकर्ता प्रमाणीकृत नहीं था होता है। सुनिश्चित करें कि आप loging बैकएंड के लिए एक ही क्षेत्र का उपयोग कर रहे हैं ... उदाहरण के लिए मैं ईमेल के साथ loging हूँ (बैकएंड ईमेल और पासवर्ड का उपयोग करता है) तो

django.contrib.auth.authenticate(username=username, password=password) 

अगर के लिए मुझे

django.contrib.auth.authenticate(username=email, password=password) 

बैकएंड है रहो यहां: http://www.micahcarrick.com/django-email-authentication.html

0

यदि आप अपने डेटाबेस में प्रतिकृति का उपयोग कर रहे हैं और अपने मास्टर/डिफ़ॉल्ट डेटाबेस पर लिखते समय रीडिका से पढ़ना होता है, तो यदि कोई प्रतिकृति अंतराल है जो इसका कारण बन सकता है। आप मास्टर पर लिखेंगे जबकि प्रमाणीकरण पढ़ने की प्रतिकृति से पढ़ने की कोशिश करेगा जिसके परिणामस्वरूप उपयोगकर्ता नहीं मिल रहा है।

समाधान उपयोगकर्ता क्वेरी के लिए डिफ़ॉल्ट डीबी का उपयोग करने के लिए अपने राउटर सेट अप करना है।

संबंधित मुद्दे