2010-07-23 23 views
1

J'ai une page web avec un lien vers une URL par ex. /customer/showitem?id=7, qui affiche les détails d'un client spécifique dans une fenêtre enfant en utilisant la méthode showitem() dans client de classe. La méthode peut définir la valeur d'un attribut de classe client qui contrôle une alerte qui est affichée lorsque la page est chargée (par exemple, self.onloadalert = "Attention, le client est endetté.").Classe non rafraîchissante au 2ème appel d'url

Si la fenêtre client est fermée, puis rouvert (avec un identifiant différent, par exemple/client/showitem? Id = 8), les détails du nouveau client s'affichent correctement, mais l'avertissement de chargement ci-dessus apparaît toujours .onloadalert n'a pas changé depuis le dernier appel (je l'ai vérifié via .débogage). Il semble que même si la méthode s'exécute à partir de zéro lors de l'appel du second url, la classe client (et toutes ses valeurs d'attribut) persiste à partir de l'appel précédent.

Je peux résoudre le problème pour cet attribut particulier en le réinitialisant au début de showitem(), mais qu'en est-il des autres customer.attributes? (surtout s'il y en a beaucoup) - Je ne peux pas tous les réinitialiser par leur nom! Comment puis-je m'assurer que la classe recharge (donc se réinitialise) pour chaque appel d'url? J'utilise CherryPy (3.20rc1), même si je suppose que la question est applicable à d'autres frameworks qui utilisent le même format/param/url de params url.

Toute aide serait appréciée.

Alan

+0

Classe client ou objet client? –

+0

Bon point, je veux dire que l'objet client persiste encore de l'appel précédent. –

Répondre

1

Si vous voulez que les données persistent pour une seule demande, le coller sur l'objet cherrypy.request:

cherrypy.request.onloadalert="Warning!" 

L'objet cherrypy.request est complètement détruit et recreeated pour chaque demande, même si elle est en toute sécurité importable. Comprendre comment est laissé comme un exercice pour le lecteur. ;)

+0

Merci fumanchu, je ne savais pas que je pourrais ajouter des attributs supplémentaires à l'objet de requête cherrypy. Cordialement. –