ビュー関数で、別のビューを呼び出してデータを渡したい:
return redirect('some-view-name', backend, form.cleaned_data)
、ここで、backendはregistration.backendsオブジェクトであり、form.cleaned_dataはフォームデータのdictです(ただし、発生を防ぐために、両方を* argsまたは** kwargsとして送信する必要があります Don't mix *args and **kwargs in call to reverse()!
エラーが発生します)。私がドキュメントで見つけたものから:
def my_view(request):
...
return redirect('some-view-name', foo='bar')
'some-view-name'引数を指定する必要があるようですが、それは単にビュー関数の名前ですか、それともURLの名前ですか?だから私はそれをdjango-registrationで行われるのと同じようにしたいと思います、ここで:
to, args, kwargs = backend.post_registration_redirect(request, new_user)
return redirect(to, *args, **kwargs)
def post_registration_redirect(self, request, user):
return ('registration_complete', (), {})
では、ビュー関数を直接呼び出すことはできますか、それともURLを指定する必要がありますか?そして、もっと重要なのは、私のfunciotn呼び出し(および必要に応じてURL)がどのように見えるべきかということです。バックエンドとcleaned_dataの両方が、後で使用するためにこのビューを通過するだけです。私はこれを試しましたが、それは不適切です:
url(r'^link/$', some-view-name)
def some-view-name(request, *args):
これと同様に :
return redirect('some_url', backend=backend, dataform.cleaned_data)
url(r'^link/$', some-view-name)
def some-view-name(request, backend, data):
それでもNoReverseMatch。しかし、django-registrationでは、次のようなものを見てきました:
url(r'^register/$',register,{'backend': 'registration.backends.default.DefaultBackend'}, name='registration_register'),
def register(request, backend, success_url=None, form_class=None,
disallowed_url='registration_disallowed',
template_name='user/login_logout_register/registration_form.html',
extra_context=None):