在我的视图函数中,我想调用另一个视图并将数据传递给它:
return redirect('some-view-name', backend, form.cleaned_data)
,其中backend是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-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调用(如果需要,还有一个网址)应该是什么样子?后端和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注册中,我看到了这样的内容:
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):