Algunas dudas sobre la aplicación de las páginas de error personalizadas en Web2Py

StackOverflow https://stackoverflow.com/questions/2391297

  •  25-09-2019
  •  | 
  •  

Pregunta

Estoy tratando de poner en práctica un decorador para las páginas de error personalizadas en web2py como por uno de los Todos Haití. Ref - http://web2py.com/AlterEgo/default/show/75

Estoy tratando de mantenerlo como un módulo en el directorio / módulos de modo que pueda importar en los controladores y colocar el decorador adecuadamente.

he guardado decorador de control de errores como /modules/onerror.py

y estoy importarlo como esta de voz controlador (or.py) -

exec('from applications.%s.modules.onerror import onerror as onerror'
                                                       % request.application)
objeto

HTTP no estaba disponible en onerror.py así que hice un -

from gluon.http import *

Pero entonces readlized que el objeto de la petición tampoco está disponible para el decorador como en la línea -

filename=os.path.join(request.folder,'views/errors/error%i.html'%status)

Tengo algunas dudas -

  1. Is / módulos de directorio de un lugar bueno para mantener un componente reutilizable?

  2. ¿Son los módulos en el directorio / módulos cargados automáticamente como una Se crea nueva instancia web2py? Si es así, ¿cómo puedo acceder a ellos en una controlador?

  3. ¿Hay alguna manera de pasar el objeto solicitud a este decorador de el controlador? Las sugerencias son bienvenidos.

Mi onerror.py actual - http://paste.pocoo.org/show/186165/ La forma en que estoy tratando de usar en un controlador - http://paste.pocoo.org/show / 186167 /

Avísame si lo estoy haciendo de una manera no evidente.

¿Fue útil?

Solución

Resuelto a través de los usuarios de web2py lista de correo .

  

También puede utilizar: onerror = load_import ( 'onerror') onerror

.      
    objeto

HTTP no estaba disponible en onerror.py así que hice un -     de importación gluon.http *

  
     

módulos de Python son módulos de Python normales en web2py también. Ellos sólo ven   palabras clave pitón a menos que les importan. web2py tiene 5 objetos especiales   (Solicitud, respuesta, sesión, caché, T) y su aplicación tiene otros (db,   auth, crud). Debido a que se crean instancias en cada petición,   no puede importar el módulo, que tienen que ser aprobada explícitamente a la   funciones en el módulo. Cuenta que mientras que esto es incómodo esto es lo   otros marcos piden que hacer todo el tiempo para todas las funciones. web2py   esto ahorra para los modelos y controladores.

     
    

Pero entonces me di cuenta de que el objeto de la petición tampoco está disponible a     el decorador como en la línea -     nombre de archivo = os.path.join (request.folder, 'views / errores / error     % I.html '% de estado)     Tengo algunas dudas -     1. ¿Son los módulos en el directorio / módulos cargados automáticamente como una     Se crea nueva instancia web2py? Si es así, ¿cómo puedo acceder a ellos?

  
     

No. Son módulos normales pitón. Usted tiene que importarlos a utilizar   ellos.

     
    
        
  1. ¿Hay alguna manera de pasar el objeto solicitud a este decorador de     el controlador? Las sugerencias son bienvenidos.
  2.     
  
     

Se necesita una meta meta_decoration decorador def (algo):        def actual_decorator (f, algo = algo):              Haz lo que quieras()              f RETURN ()        @meta_decorator retorno decorador (petición) def function_to_be_decorated (): return dict () De todos modos no es necesario este   decorador. Mira en routes.examples.py para routes_onerror. Ahi esta   una forma sencilla de hacer lo que quiera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top