![](https://secure.gravatar.com/avatar/dc475ae46eb8f1d6d78305610dda5298.jpg?s=120&d=mm&r=g)
Hi guys, I'm totally new to Twisted although everything I try so far has been a lot of fun. I have a really simple situation it seems I cannot wrap my head around. Although the tutorial have been really helpful I cannof find how to fix this last part. I created a "login" method that connects with my db through adbapi and returns a deferred. I'm using it with pyamf and it's working ok. Now I have to implement the same thing but accept logins through a standard web page. I followed the Twisted web in 60 seconds tutorial and created a render_POST method that processes the login method. The only catch is that I'm returning a mako template page. Ok, finally my problem: I cannot make it return the result of the deferred: if I debug the response I see a "<Deferred at ...>" but not the intended message. Actually if I add a callback method that just prints the response, I can get it (but since that prints the message in the log, it doesn't help). What am I missing? Here's some code to help me explain my problem: class Login(Resource): """LogIn post processing""" isLeaf = True def render_POST(self, request): rsp = None errc = None usr = User() username = cgi.escape(request.args['username'][0]) passwd = cgi.escape(request.args['passwd'][0]) try: # here I get the answer of the process. I would expect the login # message but instead I get a deferred repr object. rsp = usr.login(request, username, passwd) except Exception, e: errc = e.args[0] # this should return the contents of postproc.mak (a regular file) # but with certain keywords replaced. request.write(serve_tpl('postproc.mak', **{'status':rsp, 'username':username, 'errorcode':errc})) request.finish() return NOT_DONE_YET class Userobject): def login(self, request, username, password): rp = defer.Deferred() def cb(rs): resp = u'Unidentified reason' if len(rs)==0: resp = u'No account exists for the given username' elif rs[0]['password'!=password: resp = u'Password does not match' else: resp = u'Ok' rp.callback(resp) def eb(failure): rp.errback(failure) d = self.conn_pool.runQuery('select password from user where ' 'username=?', (username,)) d.addCallback(cb).addErrback(eb) return rp TIA, Eduardo Miguez