Foros del Web » Programando para Internet » Python »

Pasar variables entre funciones de views

Estas en el tema de Pasar variables entre funciones de views en el foro de Python en Foros del Web. Hola! Me gustaría saber como pasar una variable de una funcion def a otra en views.py La cuestión es que en una función recibo dos ...
  #1 (permalink)  
Antiguo 11/03/2015, 19:02
 
Fecha de Ingreso: septiembre-2014
Mensajes: 40
Antigüedad: 7 años, 10 meses
Puntos: 0
Pasar variables entre funciones de views

Hola!

Me gustaría saber como pasar una variable de una funcion def a otra en views.py
La cuestión es que en una función recibo dos parámetros por url, como se muestra abajo:

Código:
def EdicionCuenca(request, id_obra, id_cuenca):

if 'formularioarchivoimbornales' in request.POST:
        formularioarchivoimbornales = UploadForm(request.POST, request.FILES)
        if formularioarchivoimbornales.is_valid():
            #Se guarda la ruta del fichero en la tabla Archivo y en static
            newdoc = Archivo(docfile = request.FILES['docfile'])
            newdoc.save()
            #Se coge el fichero para aplicarle la funcion imbornal_files
            imbornal_files(request.FILES['docfile'])

            #utilizamos este metodo para darle valor al parametro y poder enviar el formulario.
            url = reverse('edicioncuenca', kwargs={'id_obra': id_obra, 'id_cuenca': id_cuenca})
            return HttpResponseRedirect(url)
Sin embargo tengo otra función que no recibe ningun parametro por url, ni envía nada a ningún template, porque simplemente lee un fichero csv y guarda sus datos como registros en la base de datos. Diche función es la que viene:

Código:
def imbornal_files(f):
    reader = csv.DictReader(f, delimiter=',')
    for row in reader:
        idcuenca=id_cuenca
        codimbornal=row['codimbornal']
        coorx=row['coorx']
        coory=row['coory']
        tipo=row['tipo']
        origen=row['origen']
        observaciones=row['observaciones']
        pnt=Point(float(coorx),float(coory))

        my_file = Imbornal(gid_cuenca_id=idcuenca, codimbornal=codimbornal, coorx=coorx, coory=coory, tipo=tipo,
            origen=origen, observaciones=observaciones, geom=pnt)
        my_file.save()
Pero claro, salta un error diciendo que id_cuenca no esta definido, y lo necesito para guardarlo en la db.

Muchas gracias!
  #2 (permalink)  
Antiguo 20/03/2015, 04:12
 
Fecha de Ingreso: marzo-2015
Mensajes: 3
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Pasar variables entre funciones de views

Lo normal en estos casos es guardar el id_cuenca en una variable de session para poder acceder a ella cuando la necesites, si hay algún motivo por el cual no haces esto expónlo, la información es un poco incompleta.

Un saludo
  #3 (permalink)  
Antiguo 20/03/2015, 08:45
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 17 años, 5 meses
Puntos: 1360
Respuesta: Pasar variables entre funciones de views

En este caso estas usando id_cuenca como una variable global, porque mejor no se la pasas de parámetro cuando llamas a esa función? Alguien un poco de bases en cualquier lenguaje de programación sabe muy bien que las variables globales te llevan a varios tipos de problemas.

Etiquetas: views
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.