2016-08-02 13 views
0

(Django 1.8, Django-Registration-Redux 1.4)Django Registrierung Redux Benutzerdefinierte Ansicht

Nachdem Sie die Antwort in diesem SO Beitrag: django-registration-redux add extra field

ich eine benutzerdefinierte Ansicht mit meiner eigenen Vorlage implementiert habe registrieren ein Benutzer, und mein benutzerdefiniertes Formular wird korrekt wiedergegeben.

user_views.py

class SignupView(RegistrationView): 

    form_class = MyRegistrationForm 

    def register(self, request, form): 

     print form 
     print request 

     new_user = super(SignupView, self).register(request, form) 

     my_user_model = MyUserModel() 
     my_user_model.user = new_user 
     my_user_model.save() 

     return new_user 

Allerdings scheint Register nicht genannt werden. Aber wenn ich post() definiere - die Anfrage kommt mit allen Formulardaten durch.

urls.py

url(
    r'^accounts/register/', 
    user_views.SignupView.as_view(), 
    name='signup' 
), # Customized-Register 

url(
    r'^accounts/', 
    include('registration.backends.default.urls') 
), # Registration-Redux 

Würde Leitlinien für die korrekte Verwendung zu schätzen wissen, danke!

Antwort

0

Ok - ich habe die Lösung bestimmt. Es hatte damit zu tun, dass mein benutzerdefiniertes Formular das (erforderliche) Feld Benutzername nicht erfasste.

Wenn es hilft, habe ich es herausgefunden, indem ich form_invalid (self, form) implementiert habe, da RegistrationView eine abgeleitete Klasse von Djangos FormView ist, die mich darauf hinwies.

Diese SO half Antwort den Benutzernamen Anforderung außer Kraft setzen: Django Registration Redux: how to change the unique identifier from username to email and use email as login

Hoffe, dass es

0

versuchen, diese Linie neuer_Benutzer = Super (MyRegistrationView, Selbst-) .register (form_class) url

und Veränderung hilft url (r '^ Konten/Register/$', MyRegistrationView.as_view(), Name = 'Registrierung_register'),

Hop e es funktioniert