2013-08-01 5 views
1

donc je travaille sur une fonction de sauvegarde profil et je ne sais pas pourquoi je reçois l'erreur suivante:erreur Python: __init __() prend au moins 3 arguments (3) donné

__init__() takes at least 3 arguments (3 given) 


C'est la fonction qu'il arrive à (juste après la frappe self.profiles.update line):

@view_config(route_name="profile", request_method='POST') 
def save_profile(self): 
    try: 
     json = self.request.json_body 
     #username = str(json['userName']) 
     first_name = str(json['firstName']) 
     last_name = str(json['lastName']) 
     phones = str(json['phones']) 
     emails = str(json['emails']) 
     self.profiles.update(self, firstName=first_name, lastName=last_name, emails=emails, phones=phones) 
     value = {'result:': 'success', 'message': 'Profile Saved!'} 
     self.respond(value) 
     return self.route('profile') 
    except Exception, err: 
     print err 
     value = {'result:': 'error', 'message': 'There was an error processing the request'} 
     self.respond(value) 
     return self.route('profile') 

enter image description here

La console étendue:

enter image description here

J'ai fait un projet de recherche pour large à init et cela semble être la seule fonction qui correspond

class WhoView(Extension): 
    def __init__(self, context, request): 
     self.session = request.session 
     self.request = request 
     self.status_code = 200 
     self.content_type = "text/html" 
     ctx = self.session.ctx 
     self.request_context = context 

     Extension.__init__(self, ctx) 

    def attach_session(self, token): 
     self.ctx.attach_session(token) 

Toute pensée? Des informations supplémentaires que vous devez voir?

+0

Cela ne résout pas votre problème, mais notez que chaque objet qui est créé dans votre programme appelle '__init__' - C'est la méthode utilisée pour initialiser un objet (mutable). – llb

+1

La trace de pile complète serait très utile. Si vous devez attraper l'exception au lieu de simplement la laisser se propager, vous pouvez utiliser 'sys.exc_info() [2]' pour obtenir la traceback. – user2357112

Répondre

2

Vous ne redirigez nulle part (self.route fait une redirection). En outre, vous ne pouvez pas rediriger ici car vous effectuez un appel ajax. Je suis assez sûr que l'attribution pour les téléphones et les courriels n'est pas correcte parce que vous jetez des tableaux aux chaînes. Nous en parlerons au bureau demain. Aussi, comme l'a souligné sza, vous ne passez pas le self pour les appels de méthode.

@view_config(route_name="profile", request_method='POST') 
def save_profile(self): 
    try: 
     json = self.request.json_body 
     #username = str(json['userName']) 
     first_name = str(json['firstName']) 
     last_name = str(json['lastName']) 
     phones = str(json['phones']) 
     emails = str(json['emails']) 
     self.profiles.update(firstName=first_name, lastName=last_name, emails=emails, phones=phones) 
     value = {'result:': 'success', 'message': 'Profile Saved!'} 
    except Exception, err: 
     print err 
     value = {'result:': 'error', 'message': 'There was an error processing the request'} 

    #returns a json response 
    return self.respond(value) 
+0

Doux! À la fin a dû également supprimer str des téléphones et des réseaux de courriels –

+2

LOL. vous travaillez ensemble – zsong

+1

Ya, Léon est assis à environ 2 pieds derrière moi – JeffRegan

1

est-ce pas

self.profiles.update(self, firstName=first_name, lastName=last_name, emails=emails, phones=phones) 

devrait être

self.profiles.update(firstName=first_name, lastName=last_name, emails=emails, phones=phones) 
+0

ouais je n'aurais pas dû me mettre à l'intérieur –

Questions connexes