en mi función de vista Quiero llamar a otro punto de vista y pasar los datos a la misma:Django redirección de retorno() con parámetros
return redirect('some-view-name', backend, form.cleaned_data)
, donde backend es de registration.backends objeto y form.cleaned_data es un diccionario de los datos del formulario (pero ambos deben enviarse como * args o ** kwargs para evitar el error Don't mix *args and **kwargs in call to reverse()!
). De lo que he encontrado en la documentación:
def my_view(request):
...
return redirect('some-view-name', foo='bar')
Parece que necesito proporcionar 'un poco de nombre-vista-argumento, pero es sólo el nombre de la función de vista, o el nombre de la URL ? Así que me gustaría para que sea similar a la forma en que se hace en django-registro, donde:
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',(), {})
Ok por lo que ahora, puedo llamar directamente a mi función de vista o tengo que proporcionar una dirección URL para ello? Y, lo que es más importante, ¿cómo se verá mi llamada de funciotn (y una URL si es necesario)? Tanto el backend como los clean_data se pasan a través de esta vista para un uso posterior. He intentado esto, pero es inadecuada:
url(r'^link/$', some-view-name)
def some-view-name(request, *args):
Así como esto:
return redirect('some_url', backend=backend, dataform.cleaned_data)
url(r'^link/$', some-view-name)
def some-view-name(request, backend, data):
todavía NoReverseMatch. Pero en django-registration, he visto algo como esto:
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):
y si no voy a operar en datos_limpios en esta vista, ¿pero solo pasarlo para un uso posterior? Tengo muchos campos en el dict clean_data, así que me gustaría evitar pasarlos como una cadena get :) – muntu
No entiendo este comentario. Explique con más detalle, actualizando su pregunta si es necesario. –
esta segunda vista solo almacenará estos datos enviados para su uso posterior. Pero, ¿estás seguro de que necesito proporcionar la URL? Desde documentos, parece que solo estoy llamando a la vista directamente. También esperaba simplemente enviar un diccionario con backend y datos en redirect() (como se hace en django-registration) y luego en la url (como esta función dict en el registro), pero por lo que veo es imposible? – muntu