Des doutes sur la mise en œuvre des pages d'erreur personnalisée dans web2py

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

  •  25-09-2019
  •  | 
  •  

Question

Je suis en train de mettre en œuvre un décorateur pour les pages d'erreur personnalisées dans web2py selon l'une des Tous Haïti. Ref - http://web2py.com/AlterEgo/default/show/75

Je suis en train de le garder comme un module dans le répertoire / modules afin que je puisse l'importer dans les contrôleurs et placez-le décorateur de façon appropriée.

J'ai gardé décorateur de la gestion des erreurs comme /modules/onerror.py

et je suis importer comme celui-ci d'un contrôleur dire (or.py) -

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

HTTP objet n'a pas été disponible en onerror.py si je l'ai fait un -

from gluon.http import *

Mais alors je readlized que l'objet de la demande est également pas disponible à le décorateur comme dans la ligne -

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

J'ai quelques doutes -

  1. est / répertoire des modules un bon endroit pour garder un tel composant réutilisable?

  2. Les modules sont dans le répertoire / modules chargés automatiquement comme nouvelle instance web2py est créé? Si oui, comment puis-je y accéder dans un contrôleur?

  3. Est-il possible que je peux passer l'objet de demande à ce décorateur de mon contrôleur? Les conseils sont les bienvenus.

Mon actuelle onerror.py - http://paste.pocoo.org/show/186165/ La façon dont je suis en train d'utiliser dans un contrôleur - http://paste.pocoo.org/show / 186167 /

Permettez-moi de savoir si je le fais d'une façon imprévisible.

Était-ce utile?

La solution

Résolu par les utilisateurs web2py liste de diffusion .

  

vous pouvez également utiliser:. Onerror = load_import ( 'onerror') onerror

     
    

HTTP objet n'a pas été disponible en onerror.py si je l'ai fait un -     d'importation gluon.http *

  
     

modules python sont des modules de python normales dans web2py aussi. Ils ne voient que   mots-clés python à moins que vous les importer. web2py a 5 objets particuliers   (Demande, réponse, session, cache, T) et votre application a d'autres (db,   auth, crud). Parce qu'ils sont instanciés à chaque demande, ils   ne peut pas importer par le module, ils doivent être transmis explicitement au   les fonctions du module. L'esprit que tout cela est gênant c'est ce que   d'autres cadres demandent de faire tout le temps pour toutes les fonctions. web2py   vous permet d'économiser ce pour les modèles et les contrôleurs.

     
    

Mais alors je me suis aperçu que l'objet de la demande est également pas disponible à     le décorateur comme dans la ligne -     filename = os.path.join (request.folder, "vues / erreurs / erreur     % I.html '% status)     J'ai quelques doutes -     1. Les modules dans le répertoire / modules automatiquement chargé en tant que     nouvelle instance web2py est créé? Si oui, comment puis-je y accéder?

  
     

Non. Ils sont des modules de python normaux. Vous devez les importer à utiliser   leur.

     
    
        
  1. Est-il possible que je peux passer l'objet de demande à ce décorateur de     mon contrôleur? Les conseils sont les bienvenus.
  2.     
  
     

Vous avez besoin d'un décorateur méta def meta_decoration (quelque chose):        def actual_decorator (f, quelque chose =):              fais ce que tu veux()              retourner f ()        retour décorateur @meta_decorator (demande) def function_to_be_decorated (): dict de retour () Quoi qu'il en soit, vous n'avez pas besoin de cette   décorateur. Regardez dans routes.examples.py pour routes_onerror. Il y a   une façon simple de faire ce que vous voulez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top