Django使用参数返回重定向()
Django使用参数返回重定向()
在我的视图函数中,我想调用另一个视图并传递数据给它:
return redirect('some-view-name', backend, form.cleaned_data)
其中backend是registration.backends对象的一部分,form.cleaned_data是表单数据的字典(但两者必须作为*args或**kwargs发送,以防止引发不要在调用reverse()时混合使用*args和**kwargs!
错误)。根据我在文档中找到的内容:
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?更重要的是,我的函数调用(如果需要的话还有URL)应该是什么样的?backend和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):