2013-10-30 6 views
16

से 'उपयोगकर्ता नाम' फ़ील्ड निकालें जब django-पंजीकरण django 1.5 और कस्टम उपयोगकर्ता मॉडल का समर्थन नहीं करता है। मैं django-allauth का उपयोग करने की कोशिश कर रहा हूं, पहली बार यह शानदार उत्पाद है।django-allauth

समस्या मेरे पास है - उपयोगकर्ता नाम फ़ील्ड आवश्यक है, लेकिन मेरे ऐप में मेरे पास उपयोगकर्ता नाम नहीं है। तो, allauth प्रलेखन कहते हैं:

**Available settings:** 
ACCOUNT_AUTHENTICATION_METHOD (="username" | "email" | "username_email") 

निर्दिष्ट करता है उपयोग करने के लिए प्रवेश विधि - उपयोगकर्ता अपने उपयोगकर्ता नाम, ई-मेल एड्रेस, या दोनों में से किसी एक में प्रवेश करने से में लॉग या नहीं।

ठीक है, मैंने किया है, और त्रुटि मिली:

AssertionError at /accounts/signup/ 
No exception supplied 

models.py:

class MyUser(AbstractBaseUser, PermissionsMixin): 
    title = models.CharField ('Name', max_length=100) 
    email = models.EmailField('Email', max_length=255, unique=True) 
    ... 

settings.py

ACCOUNT_USERNAME_REQUIRED = False 
ACCOUNT_AUTHENTICATION_METHOD = ('email') 
AUTH_USER_MODEL = 'internboard.MyUser' 

मैं क्या गलत कर रहा हूँ?

उत्तर

34

धन्यवाद, मैंने पाया, मेरे काम के लिए सही सेटिंग:

ACCOUNT_AUTHENTICATION_METHOD = 'email' 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_UNIQUE_EMAIL = True 
ACCOUNT_USERNAME_REQUIRED = False 
+1

हाय Rukomoynikov, क्या आपको इसके लिए अपना खुद का उपयोगकर्ता मॉडल बनाना है? यदि हां, तो यह वास्तव में कैसा दिखता था (यदि आप साझा करना चाहते हैं)? – ademartini

+0

आधिकारिक डॉक्टर से हालिया संसाधन। http://django-allauth.readthedocs.org/en/latest/advanced.html#custom-user-models – attomos

+0

इसके साथ एकमात्र समस्या यह है कि यदि उपयोगकर्ता फेसबुक कहने के साथ साइन अप करता है तो उनके पास उपयोगकर्ता नाम नहीं है Django उपयोगकर्ता खाता। –

3

आप स्टैकट्रेस में त्रुटि django.core.exceptions.FieldDoesNotExist: Account has no field named 'username' with reference to USER_MODEL_USERNAME_FIELD` सामना करते हैं, सेटिंग्स की जरूरत निम्नलिखित हैं:

ACCOUNT_USER_MODEL_USERNAME_FIELD = None 
ACCOUNT_EMAIL_REQUIRED = True 
ACCOUNT_USERNAME_REQUIRED = False 
ACCOUNT_AUTHENTICATION_METHOD = 'email'