2010-12-15 6 views
2

Donc, cette question has been asked before, mais pas répondu dans les moindres détails.Pylons: Comment écrire une page personnalisée 404?

Je veux remplacer la page d'erreur Pylons par défaut pour en faire une version plus personnalisée. J'ai aussi loin que le contrôleur en écrasant error.py, comme suit:

def document(self): 
    """Render the error document""" 
    resp = request.environ.get('pylons.original_response') 
    content = literal(resp.body) or cgi.escape(request.GET.get('message', '')) 
    custom_error_template = literal("""\ 
    # some brief HTML here 
    """) 
    page = custom_error_template % \ 
     dict(prefix=request.environ.get('SCRIPT_NAME', ''), 
      code=cgi.escape(request.GET.get('code', str(resp.status_int))), 
      message=content) 
    return page 

Cela fonctionne bien. Ce que je voudrais faire maintenant est d'utiliser un template dans le répertoire des templates, pour que la page 404 puisse hériter de mon template de layout habituel, CSS, etc

(Je sais que c'est une mauvaise idée pour 500 erreurs - I ' ll vérifier dans error.py que le code est 404 avant que j'utilise le modèle plutôt qu'un littéral.)

Ainsi, voici la question. Comment puis-je définir custom_error_template pour pointer sur mon modèle, plutôt que sur un littéral?

Répondre

1

Vous devriez être en mesure d'utiliser la méthode render (importer à partir yourapp.lib.base, et utiliser return render('/path/to/error/template')

+0

Works , mais je reçois 'UndefinedError: "g" non défini'. Une idée de comment je peux m'assurer que le modèle sait sur les variables globales? – AP257

+0

Compris: de wdmmg.lib.base import * – AP257

+2

Comme d'habitude ce qui prend 5 minutes en D jango prend 2 heures et une question SO pour comprendre dans Pylons ... – AP257

Questions connexes