Entender el manejo de URL

Problema.

Cómo diseñar el esquema de manejo de URL “/” para todo el sitio?

Solución.

En Web.py el esquema de manejo de URL’s es sencillo, potente y flexible. En la parte superior de cada aplicación, por lo general, verá el esquema de URL’s definido como tupla:

urls = (
    "/tasks/?", "signin",
    "/tasks/list", "listing",
    "/tasks/post", "post",
    "/tasks/chgpass", "chgpass",
    "/tasks/act", "actions",
    "/tasks/logout", "logout",
    "/tasks/signup", "signup"
)


El formato de esta tupla es: url-path-pattern, handler-class este patron se repite para cada uno de los esquema de URL a definir. si usted no entiende la relación entre patrones de URL y clases manejadoras, por favor léase el Hola Mundo o el Tutorial de Web.py antes de leer otra receta del cookbook.

Ruta Que Concuerde

Usted puede usar el poder de las regex (expresiones regulares) para diseñar patrones de URL’s más flexibles. Por ejemplo, /(test1|test2) que captura ya sea /test1 ó /test2. El punto clave a entender es que este emparejamiento ocurre para determinar el camino de la URL. Por ejemplo la siguiente URL:

http://localhost/myapp/greetings/hello?name=Joe

La ruta de esta URL es /myapp/greetings/hello. Web.py internamente le agrega ^ y $ a el patrón de la URL, de modo que el patrón /tasks/ no coincidirá con /tasks/addnew. Para coincidir con la ruta, no se puede utilizar un patrón como: /tasks/delete?name=(.+), ya que la parte que sigue a ? es un query(Query string) y no se compara. Para una descripción detallada de los componentes de las URL’s, leer por favor web.ctx.

Captura de Parámetros

En el modelo de dirección de URL se puede tomar los parámetros que se pueden utilizar en su clase manejadora:

"/users/list/(.+)", "list_users"

El pedazo después de list/ es capturado y se puede utilizar como un parámetro en los métodos GET o POST:

class list_users:
    def GET(self, name):
        return "Listing info about user: {0}".format(name)

Se puede definir más de un parámetro o como se desee. Nótese también que los parámetros de consulta(query string) de URL (que aparece después de la ?) Se puede obtener utilizando web.input().

Nota sobre sub-aplicaciones

Para manejar mejor las aplicaciones web más grandes, Web.py soporta sub-applications. Si bien el diseño del esquema de URL con las subaplicaciones, mantiene en mente que la ruta (web.ctx.path) obtendrá la ruta padre que se quitó. Por ejemplo: Si en la aplicación principal, usted define el patrón de URL “/blog” a la sub-application ‘blog‘, en tu sub-application blog todos los patrones de URL arrancarán con “/“, no con “/blog“. Leer la receta web.ctx para más detalles.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s