Llamar a una vista desde otra

1,050 views
Skip to first unread message

b3ni

unread,
Sep 30, 2008, 7:30:11 AM9/30/08
to djan...@googlegroups.com
Hola,
me gustaría llamar a una vista desde otra vista. ¿es posible?

Esta vista es:

@login_required
def view_sw(request):
    peticion = request.GET.get('peticion', '0')
   
    [...]
   
    origen = int(request.GET.get('origen', '0'))
    destino = int(request.GET.get('destino', '0'))
   
    return DATA
   
Como se observa dentro espera que se le pasen paramentros GET.
¿Es posible llamarla de otra vista? o tengo que sacar la funcionalidad para que sea llamada desde ambas (esto no me mola.)

Saludos y gracias.

--
Benito Rodríguez Arcos

Jose Jiménez López

unread,
Sep 30, 2008, 10:41:38 AM9/30/08
to djan...@googlegroups.com
Hola,

te podrías explicar un poco mejor? no entiendo del todo lo que quieres hacer...
Si que se puede llamar a otra vista de varias formas, puedes hacer un return HttpRedirect('/otra/url/')
O también puedes hacer un return otra_vista()

Pero no sé si es eso lo que estás buscando...

Jose Jiménez López

unread,
Sep 30, 2008, 10:43:39 AM9/30/08
to djan...@googlegroups.com
perdón, es HttpResponseRedirect() no HttpRedirect()

Lo puedes ver en la documentación de django: http://www.djangoproject.com/documentation/0.95/request_response/

b3ni

unread,
Sep 30, 2008, 10:49:23 AM9/30/08
to djan...@googlegroups.com

2008/9/30 Jose Jiménez López <jjimen...@gmail.com>
Hola,

te podrías explicar un poco mejor? no entiendo del todo lo que quieres hacer...
Si que se puede llamar a otra vista de varias formas, puedes hacer un return HttpRedirect('/otra/url/')
O también puedes hacer un return otra_vista()



Lo siento, lo explico.

Tengo la vista como he dicho:


@login_required
def view_sw(request):
    peticion = request.GET.get('peticion', '0')
   
    return AjaxResponse(datos)
   
Donde hallas response es un objetillo del tipo:

AjaxResponse(HttpResponse):

Esta vista la utiliza para recibir peticiones ajax en función del campo peticion, hacer una u otra cosa. Y por supuesto devolver un objeto AjaxResponse.

Ahora en otra vista clásica que estoy desarrollando tengo que realizar el mismo cálculo que hace la vista anterior. De ahí mi pregunta si podía reutilizarla en el código de alguna forma parecida a esto:

def view_clasica(request):
    ajax = view_sw(otro_request)
   
    print ajax.data
   
Por eso estaba viendo el objeto request si puedo crear alguno o añadirle propiedades para realizar esto.

No se, si me estoy liando.

¿algún comentario?

--
Benito Rodríguez Arcos

Esau Rodriguez

unread,
Sep 30, 2008, 3:11:10 PM9/30/08
to djan...@googlegroups.com
Si puedes. Tienes que pasar el request como parámetro y listo. Esto
está publicado en muchos sitios en Internet; en otros sitios te
hubieran puesto un RTFM y se hubieran quedado tan panchos.

2008/9/30 b3ni <camo...@gmail.com>:
--
Esaú Rodríguez
esa...@gmail.com

b3ni

unread,
Sep 30, 2008, 3:15:40 PM9/30/08
to djan...@googlegroups.com
2008/9/30 Esau Rodriguez <esa...@gmail.com>

Si puedes. Tienes que pasar el request como parámetro y listo.

Pero ¿pasar el mismo request de la vista padre? o ¿crear uno nuevo?. Supongo que será este caso añadiendo al GET las variables que necesite.
 
Esto
está publicado en muchos sitios en Internet; en otros sitios te
hubieran puesto un RTFM y se hubieran quedado tan panchos.

Que es un RTFM?
 

--
Esaú Rodríguez
esa...@gmail.com



Muchas gracias.

--
Benito Rodríguez Arcos

Jose Caballero

unread,
Sep 30, 2008, 3:18:05 PM9/30/08
to djan...@googlegroups.com
'Read The F**** Manual'
También existe el STFG, 'Search The F*** Google'

Ambos vienen a ser lo mismo "busca un poquito por tu cuenta antes de preguntar"

b3ni

unread,
Sep 30, 2008, 4:39:57 PM9/30/08
to djan...@googlegroups.com

2008/9/30 Jose Caballero <jcaball...@gmail.com>

'Read The F**** Manual'
También existe el STFG, 'Search The F*** Google'

Ambos vienen a ser lo mismo "busca un poquito por tu cuenta antes de preguntar"


No consideraba que fuera una pregunta tan sencilla o fácil de encontrar. Sinceramente no he búscado.

Gracias de todos modos.

--
Benito Rodríguez Arcos

Facundo Casco

unread,
Sep 30, 2008, 4:50:16 PM9/30/08
to djan...@googlegroups.com
2008/9/30 b3ni <camo...@gmail.com>:

> Hola,
> me gustaría llamar a una vista desde otra vista. ¿es posible?
>
Si, es posible sin problemas. Una vista no es más que una funcion
Python que recibe un objeto tipo request y devuelve un HttpResponse o
un error. Mientras le pases a la vista que estas llamando el request
necesario y despues trabajes con el HttpResponse que te devuelve podes
hacer lo que quieras.
Basicamente

def vista_hija(request, par1=None):
#procesa el request
return render_to_response(template, data)

def vista_padre(request):
#procesa el request si es necesario
respuesta = vista_hija(request, 'algo')
#procesa la respuesta si es necesario
return respuesta

Como ves tambien podes agregarle parametros a la vista_hija cuando la
llamas desde la vista_padre. Lo unico que tenes que tener en cuenta es
que la vista_padre devuelva un HttpResponse.

Jose Caballero

unread,
Sep 30, 2008, 6:59:22 PM9/30/08
to djan...@googlegroups.com
Bueno. Por suerte (o por desgracia, cada uno tiene su opinión) esta lista es más amigable, y no se suelen dar ese tipo de respuestas.
En los foros en inglés suelen ser más agresivos y es la respuesta más común.

Esau Rodriguez

unread,
Oct 8, 2008, 9:59:15 AM10/8/08
to djan...@googlegroups.com
2008/9/30 Jose Caballero <jcaball...@gmail.com>:
> Bueno. Por suerte (o por desgracia, cada uno tiene su opinión) esta lista es
> más amigable, y no se suelen dar ese tipo de respuestas.
> En los foros en inglés suelen ser más agresivos y es la respuesta más común.

Cierto pero que conste que respondí. Personalmente no estoy en contra
de que esta lista sea amigable; pero creo que no debería ser la
primera opción de consulta. A veces tengo la sensación de que muchos
preguntan aquí sin haber siquiera buscado en Google, y debería ser al
revés. Preguntar todo lo que no encuentres en Google en una búsqueda
sencilla (tampoco se trata de que revises uno por uno todos los
resultados de Google).

Esto me cogió en un mal día, no pretendía ser rudo.

>
>
>
>
> El 30 de septiembre de 2008 16:39, b3ni <camo...@gmail.com> escribió:
>>
>> 2008/9/30 Jose Caballero <jcaball...@gmail.com>
>>>
>>> 'Read The F**** Manual'
>>> También existe el STFG, 'Search The F*** Google'
>>>
>>> Ambos vienen a ser lo mismo "busca un poquito por tu cuenta antes de
>>> preguntar"
>>>
>>
>> No consideraba que fuera una pregunta tan sencilla o fácil de encontrar.
>> Sinceramente no he búscado.
>>
>> Gracias de todos modos.
>>
>> --
>> Benito Rodríguez Arcos
>>
>>
>
>
> >
>



--
Esaú Rodríguez
esa...@gmail.com

b3ni

unread,
Oct 8, 2008, 11:13:19 AM10/8/08
to djan...@googlegroups.com
2008/10/8 Esau Rodriguez <esa...@gmail.com>

2008/9/30 Jose Caballero <jcaball...@gmail.com>:
> Bueno. Por suerte (o por desgracia, cada uno tiene su opinión) esta lista es
> más amigable, y no se suelen dar ese tipo de respuestas.
> En los foros en inglés suelen ser más agresivos y es la respuesta más común.

Cierto pero que conste que respondí. Personalmente no estoy en contra
de que esta lista sea amigable; pero creo que no debería ser la
primera opción de consulta. A veces tengo la sensación de que muchos
preguntan aquí sin haber siquiera buscado en Google, y debería ser al
revés. Preguntar todo lo que no encuentres en Google en una búsqueda
sencilla (tampoco se trata de que revises uno por uno todos los
resultados de Google).

Esto me cogió en un mal día, no pretendía ser rudo.

A mi no me molestó. Por el lado bueno, así supe lo que es un RTFM.

Retomando un poco el tema, al final no puede reutilizar una vista como yo quería. A modo de recordatorio y poniendo la solución que me daba Facundo.


def vista_hija(request, par1=None):
  #procesa el request
  return render_to_response(template, data)

def vista_padre(request):
  #procesa el request si es necesario
  respuesta = vista_hija(request, 'algo')
  #procesa la respuesta si es necesario
  return respuesta

 
La solución es buena si la vista hija espera recibir los parámetros como argumentos. Pero en mi caso yo leía los parametros del diccionario GET y POST del request.

En un primer momento pensé en añadir los parametros que necesitara a estos diccionarios del request del padre, pero, son inmutables. Y como no se si se puede crear un objeto request desde cero y configurarlo a mi gusto, tuve que sacar la funcionalidad de la vista hija a una función y así poder llamarla desde donde quiera.

Al final me gustó la solución. Tengo un módulo con toda la funcionalidad de los SW que necesita mi aplicación y los llamo desde las vistas que me interesan.

Saludos.


>
>
>
>
> El 30 de septiembre de 2008 16:39, b3ni <camo...@gmail.com> escribió:
>>
>> 2008/9/30 Jose Caballero <jcaball...@gmail.com>
>>>
>>> 'Read The F**** Manual'
>>> También existe el STFG, 'Search The F*** Google'
>>>
>>> Ambos vienen a ser lo mismo "busca un poquito por tu cuenta antes de
>>> preguntar"
>>>
>>
>> No consideraba que fuera una pregunta tan sencilla o fácil de encontrar.
>> Sinceramente no he búscado.
>>
>> Gracias de todos modos.
>>
>> --
>> Benito Rodríguez Arcos
>>
>>
>
>
> >
>



--
Esaú Rodríguez
esa...@gmail.com





--
Benito Rodríguez Arcos

Esau Rodriguez

unread,
Oct 8, 2008, 4:37:21 PM10/8/08
to djan...@googlegroups.com
2008/10/8 b3ni <camo...@gmail.com>:
Hay un metodo copy que devuelve un dict es decir POST.copy pero
mutable. No sé si puedes asignar después es dict al atributo POST o
GET.

>
> En un primer momento pensé en añadir los parametros que necesitara a estos
> diccionarios del request del padre, pero, son inmutables. Y como no se si se
> puede crear un objeto request desde cero y configurarlo a mi gusto, tuve que
> sacar la funcionalidad de la vista hija a una función y así poder llamarla
> desde donde quiera.
>
> Al final me gustó la solución. Tengo un módulo con toda la funcionalidad de
> los SW que necesita mi aplicación y los llamo desde las vistas que me
> interesan.

Yo creo que saliste ganando por el cambio :P.

>
> Saludos.
>>
>>
>> >
>> >
>> >
>> >
>> > El 30 de septiembre de 2008 16:39, b3ni <camo...@gmail.com> escribió:
>> >>
>> >> 2008/9/30 Jose Caballero <jcaball...@gmail.com>
>> >>>
>> >>> 'Read The F**** Manual'
>> >>> También existe el STFG, 'Search The F*** Google'
>> >>>
>> >>> Ambos vienen a ser lo mismo "busca un poquito por tu cuenta antes de
>> >>> preguntar"
>> >>>
>> >>
>> >> No consideraba que fuera una pregunta tan sencilla o fácil de
>> >> encontrar.
>> >> Sinceramente no he búscado.
>> >>
>> >> Gracias de todos modos.
>> >>
>> >> --
>> >> Benito Rodríguez Arcos
>> >>
>> >>
>> >
>> >
>> > >
>> >
>>
>>
>>
>> --
>> Esaú Rodríguez
>> esa...@gmail.com
>>
>>
>
>
>
> --
> Benito Rodríguez Arcos
>
> >
>


Saludos.
--
Esaú Rodríguez
esa...@gmail.com

Devilsito

unread,
Jul 12, 2024, 2:23:57 PMJul 12
to Django-es

Esau Rodriguez: 
Esa era la respuesta que andaba buscando: " ..Tienes que pasar el request como parámetro y listo....", preciso y conciso.
Gracias
Reply all
Reply to author
Forward
0 new messages