2016-11-01 6 views
1

私はdjango-registration-reduxを持っていますが、カスタムフォームを使用してカスタムsuccess_urlを設定しようとしても、それは行いません。もし私がBaseRegistrationViewのソースコードを変更すると、うまくいくでしょう、なぜこれが起こっていますか?私は正しく上書きしていると信じています。Django-Registration-Redux:デフォルトのフォームと成功のオーバーライドURL

registrationは、INSTALLED_APPSの先頭です。私は移行しました。

forms.py

from django import forms 
from registration.forms import RegistrationFormUniqueEmail 


class UserProfileRegistrationForm(RegistrationFormUniqueEmail): 
    field = forms.CharField() 

URLs.py

import logging 
logging.basicConfig(filename='example.log', level=logging.DEBUG) 

from django.conf import settings 
from django.conf.urls import url, include 
from django.conf.urls.static import static 
from django.contrib import admin 
from registration.backends.simple.views import RegistrationView 

from myapp.models import UserProfile 
from myapp.forms import UserProfileRegistrationForm 


class MyRegistrationView(RegistrationView): 
    logging.debug("Class initialised") 
    success_url = '/test/' 
    form_class = UserProfileRegistrationForm 

    def register(self, form_class): 
     logging.debug("Registering") 
     new_user = super(MyRegistrationView, self).register(form_class) 
     user_profile = UserProfile() 
     user_profile.user = new_user 
     user_profile.field = form_class.cleaned_data['field'] 
     user_profile.save() 
     logging.debug(user_profile) 
     return user_profile 

    def get_form_class(self): 
     logging.debug("Getting form class") 
     return UserProfileRegistrationForm 


urlpatterns = [ 
    url(r'^', include('myapp.urls')), 
    url(r'^accounts/', include('registration.backends.simple.urls')), 
    url(r'^accounts/register/$', MyRegistrationView.as_view(form_class=UserProfileRegistrationForm), name="registration_register"), 
    url(r'^accounts/password/change/$', MyRegistrationView.as_view(), name="auth_password_change"), 
    url(r'^accounts/password/change/done/$', MyRegistrationView.as_view(), name="auth_password_changed"), 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

ヒットしないとどちらも "フォームクラスを取得" んます決して "登録" のログ。

私はRegistrationViewのためにすべての可能な5つの輸入品を試してみました:

registration.views.RegistrationView 
registration.backends.hmac.views.RegistrationView 
registration.backends.simple.views.RegistrationView 
registration.backends.default.views.RegistrationView 
registration.backends.model_activation.views.RegistrationView 

答えて

0

は、あなたは、デフォルトのURLを含める前に、あなたのカスタムビューを含める必要があります。それ以外の場合、DjangoはデフォルトのURLと最初に一致し、カスタムビューは決して使用されません。

url(r'^accounts/register/$', MyRegistrationView.as_view(form_class=UserProfileRegistrationForm), name="registration_register"), 
... 
url(r'^accounts/', include('registration.backends.simple.urls')), 
関連する問題