2014-09-01 11 views
5

ile Django allauth giriş formunu geçersiz kılma Zaten ACCOUNT_SIGNUP_FORM_CLASS basit ayar değişkeni ile kayıt formunu geçersiz kıldım ama ACCOUNT_FORMS = {'login': 'yourapp.forms.LoginForm'} kullanmanız gereken giriş formunu geçersiz kıldım. İstediğim form var ve gevrek-formlar ve Bootstrap3 mükemmel görüntüler: Ben formu gönderdiğinizdeACCOUNT_FORMS

class LoginForm(forms.Form): 
    login = forms.EmailField(required = True) 
    password = forms.CharField(widget = forms.PasswordInput, required = True) 

    helper = FormHelper() 
    helper.form_show_labels = False 
    helper.layout = Layout(
     Field('login', placeholder = 'Email address'), 
     Field('password', placeholder = 'Password'), 
     FormActions(
      Submit('submit', 'Log me in to Cornell Forum', css_class = 'btn-primary') 
     ), 
    ) 

Ben AttributeError at /account/login/ - 'LoginForm' object has no attribute 'login' olsun. Burada neyin yanlış gidiyor? Orijinal allauth giriş formu için kaynak şuradadır:

+0

dokümanlar burada ayarı gösteriyor: http://django-allauth.readthedocs.org/en/latest/configuration.html – wnajar

cevap

7

Anlayışımdan, ACCOUNT_FORMS kullanarak varsayılan LoginForm'un üzerine yazabilirsiniz, ancak orijinal sınıfta sağlanan tüm yöntemleri içeren bir sınıf sağlamanız gerekir. Sınıfınız login yönteminde eksik.

YourLoginForm, YourLoginForm dosyasının orijinal sınıfından miras aldığı ACCOUNT_FORMS = {'login': 'yourapp.forms.YourLoginForm'} dosyasını settings.py dosyanıza koyardım. allauth için

# yourapp/forms.py 

from allauth.account.forms import LoginForm 

class YourLoginForm(LoginForm): 
    def __init__(self, *args, **kwargs): 
     super(YourLoginForm, self).__init__(*args, **kwargs) 
     self.fields['password'].widget = forms.PasswordInput() 

     # You don't want the `remember` field? 
     if 'remember' in self.fields.keys(): 
      del self.fields['remember'] 

     helper = FormHelper() 
     helper.form_show_labels = False 
     helper.layout = Layout(
      Field('login', placeholder = 'Email address'), 
      Field('password', placeholder = 'Password'), 
      FormActions(
       Submit('submit', 'Log me in to Cornell Forum', css_class = 'btn-primary') 
      ), 
     ) 
     self.helper = helper 
+0

Bu ne yaptım aslında ama bir kabus/bir yol değil aşağıya doğru gitmeye değer çünkü esasen bütünleştirilmiş, “LoginForm” sınıfını kopyalamanız gerekiyor. Çok genişletilemez ve belgelenmemiş. Sonunda Django'yu bıraktım ve uygulamayı Laravel ile bitirdim. En iyi kararı verdim. – wnajar

+0

FYI bunu okuyan herkes için, bu çözüm başka bir şey kopyalamak zorunda kalmadan benim için iyi çalıştı. Mükemmel çalıştı. – awwester

+0

Bunu yaparken dairesel ithalat yapmaya devam ediyorum – guival