2010-03-07 4 views
0

Essayer de trouver la meilleure façon de le faire:Dans une application Web pylons, un cookie doit-il être défini à partir d'une classe de modèle ou d'un contrôleur?

dois-je faire quelque chose comme:

def index(self): 
    if request.POST: 
     u = User(id) 
     u.setCookie() #All session logic in def setCookie() 

Ou mettre le cookie dans le contrôleur comme:

def index(self): 
    if request.POST: 
     u = User(id) 
     response.set_cookie('session_key', u.session_key, max_age=3600) 

Pourquoi faire un manière ou l'autre? Je vous remercie.

Répondre

2

Je pense que traditionnellement, vous voudriez que le modèle se préoccupe de la persistance et de la validation des données, mais pas des trucs liés au http comme les cookies. Ce qui laisse le contrôleur à l'endroit le plus approprié à mon avis.

Une raison (et non la seule) que je peux penser à ceci est qu'il pourrait être nécessaire un jour que vous deviez exécuter des applications contre votre logique de modèle qui n'ont rien à voir avec le contenu web.

compte tenu de votre implémentation ci-dessus, je soupçonne que l'objet utilisateur devrait avoir accès à la réponse de l'empilage proxy/globals stuff dans pylons (pourrait être faux). Donc, si vous avez besoin d'utiliser les mêmes classes de modèle dans un programme qui consomme des messages d'une file d'attente de messages par exemple, la machine pylônes qui rend la réponse disponible ne serait pas disponible. Cela pourrait être un problème facilement évitable.

0

Je partage également l'opinion de Tom, vous devriez essayer d'éviter de nombreuses dépendances dans différentes classes. Donc, le contrôleur devrait à tout le http (demande, réponse) des choses liées. Aussi pour tester c'est beaucoup plus facile.