Django使用参数返回重定向()

12 浏览
0 Comments

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):

0