0

私は、本当に単純な問題のように見えるものに対する答えを求めて、Web (および StackOverflow) を検索してきました。カスタムフォームでdjango-userenaを使用しています。

私の form.py の中は次のとおりです。

class RegistrationForm(SignupFormOnlyEmail):

    first_name = forms.CharField(label='First Name', max_length=30, required=True, error_messages={'required':'Please Provide Your First Name'})
    last_name = forms.CharField(label='Last Name', max_length=30, required=True)
    email2 = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict, maxlength=75)), label=_("Retype Email"), required=True)
    parent_type = forms.ChoiceField(label="I am a", choices=ACCOUNT_TYPES, widget=forms.RadioSelect)
    child_count = forms.ChoiceField(label="My Kids", choices=KID_CHOICES, widget=forms.Select)
    grade = forms.ChoiceField(label="My Classroom", choices=GRADE_CHOICES, widget=forms.Select)
    tos = forms.BooleanField(label="I accept the Terms of Use.", required=True)

    def __init__(self, *args, **kwargs):

        self.initial = kwargs.pop('initial', None)
        kidCount = self.initial['child_count']
        account_type = self.initial['parent_type']

        super(RegistrationForm, self).__init__(*args, **kwargs)

私の urls.py の中に入れました:

url(r'^membership/signup/$', signup_view, name='userena_signup'),

私のカスタム ビューは次のようになります。

def signup_view(request):

    form = RegistrationForm(initial={'parent_type':request.session['parent_type'],'child_count':request.session['child_count']})
    response = userena_views.signup(request,  signup_form=form, extra_context={'section':'Membership','pagetitle':'Sign Up'})
    return response

フォームを投稿して /membership/signup/ に移動すると、「TypeError」が表示されます

「RegistrationForm」オブジェクトは呼び出し可能ではありません

スタック トレースのダンプは次のとおりです。

トレースバック: ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 111. response = callback(request, *callback_args, **callback_kwargs) ファイル "/Users/lawrenceleach/Dropbox/Sites/django/wonderville/membership/views.py" in signup_view 42. response = userena_views.signup(request, signup_form=form, extra_context={'section':'Membership ','pagetitle':'Sign Up'}) ファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/userena/decorators.py" in _wrapped_view 28. return view_func( request, *args, **kwargs) サインアップ 115 のファイル "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/userena/views.py"。フォーム = サインアップフォーム()

例外タイプ: TypeError at /membership/signup/ 例外値: 'RegistrationForm' オブジェクトは呼び出し可能ではありません

私が言ったように、答えは私を正面から見つめていると確信していますが、私はそれを見ることができません. どんな助けでも大歓迎です。

前もって感謝します!

L.

4

2 に答える 2

1

解決策は、初期フォーム値をディクショナリオブジェクトとして、ビュー内のフォーム呼び出しの「extra_context」変数に渡すことでした。Djangoの組み込みフォームツールを使用していた場合、上記で最初に行ったことは機能していました。私はこの問題をUserenaの人々に投稿しました。それは彼らのシステム内のバグのようです。

于 2012-09-14T20:07:40.740 に答える
1

オブジェクトの代わりにフォーム クラスをsignup関数に渡す必要があります。詳細については、コードを参照してください。

の代わりに:

form = RegistrationForm(initial={'parent_type':request.session['parent_type'],'child_count':request.session['child_count']})
response = userena_views.signup(request,  signup_form=form, extra_context={'section':'Membership','pagetitle':'Sign Up'})

そのはず:

response = userena_views.signup(request,  signup_form=RegistrationForm, extra_context={'section':'Membership','pagetitle':'Sign Up'})

userena_views.signupにあるからform = signup_form()。もちろん、フォームの初期値が失われます。

于 2012-09-13T20:47:42.630 に答える