[Python-es] Cómo utilizar la variable controller en PyRoutes

Chema Cortes py en ch3m4.org
Mar Jun 14 01:35:18 CEST 2011


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

El 13/06/11 14:10, Olemis Lang (Simelix) escribió:
> Hola a tod en s !
> 
> Recientemente he utilizado el módulo `routes` y he notado algo
> que, a mi entender, es un poco raro; especialmente después de
> leer la documentación. Allí mencionan ejemplos como el siguiente.
> Sin embargo, cuando se ejecuta este fragmento no se detecta
> la ruta
> 
> {{{
> #!python
> 
>>>> mapper = Mapper()
>>>> mapper.connect('test', '/{controller}/{action}')
>>>>
>>>> print mapper.routematch(environ=environ)
> None
> 
> }}}

En el Mapper() no especificas los controladores (ni tampoco el
directorio de los controladores). Por defecto, si no encuentra el
controlador adecuado siempre devuelve None. Ése es también el motivo por
el que el código que pones luego funciona al especificar un controlador.

Para solucionarlo, tienes dos opciones:

1.- pasar a Mapper() la ruta (absoluta) a los controladores

mapper = Mapper(directory='/ruta/a/los/controllers']


2.- pasar a Mapper() una función controler_scan que devuelva una lista
de controladores


Por ejemplo, en el segundo caso sería algo así:

def controller_scan(directory=None):
	return ['controller']

mapper = Mapper(controller_scan=controller_scan)




> 
> 
> Por otra parte , si se cambia ligeramente el código anterior entonces
> sí funciona.
> 
> {{{
> #!python
> 
> mapper = Mapper()
> mapper.connect('test', '/hello/{action}', controller='hello')
> 
> mapper.routematch(environ=environ)
> 
> }}}
> 
> Q:
>  - Alguien sabe pq es q no c puede usar la variable
>    `controller` en la regla de las rutas ?
> 
> Gracias por adelantado
> 

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJN9p6wAAoJEFdWyBWwhL4FgWsIALkbM6oOoh7xsJMLhyA4cyri
jxoXmY/70AR+Jfrjtho1nauHNaZ03NoDs9Yzf0bEKingGUhLXLnx8ERiSxeezx8v
9MeO27ytKgJsqBKRKP5q3+X/OYDXL5RLxDqgsyI8N1Y/KxKCxxh15BklvgDQPjNE
O/b8RuvxfpjRSKzoY0lFa1hFCsjj/KtfwO8LTSA0vb14Rgnn2I5Ql9tcQCKPkchv
1OkIPNoPFoCAHjC1bsr/7RYtLcMGdKY9w4xGwGYXR74QrfqMY+w7S1Lr0rZe9R+e
Opn3ipm+RiS5DM/giylduFkqGLmOPEKVPCykZVYfSN4xOcXQQxi0ZuRCS1K0/DM=
=Tc0r
-----END PGP SIGNATURE-----


Más información sobre la lista de distribución Python-es