У своїй функції перегляду я хочу викликати інший вигляд і передати йому дані:
return redirect('some-view-name', backend, form.cleaned_data)
, де бекенд - це об’єкт registration.backends, а form.cleaned_data - це дикт даних форми (але обидва вони повинні бути надіслані як * 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-реєстрації, де:
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-адреса, якщо потрібно)? І серверні дані, і очищені дані просто передаються через цей подання для подальшого використання. Я спробував це, але це неправильно:
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-реєстрації я бачив щось подібне:
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):