2014-09-29 12 views
0

我正嘗試使用GAE的用戶服務與Google帳戶進行集成。這是我的代碼。如何使用bottle.py框架的谷歌應用程序引擎的用戶服務?

from framework import bottle 
from framework.bottle import route, template, request, error, debug 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.api import users 



@route('/') 
def DisplayForm(): 
    if user: 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.write('Hello, ' + user.nickname()) 
    else: 
     self.redirect(users.create_login_url(self.request.uri)) 


if __name__=="__main__": 
    main() 

此代碼拋出一個錯誤:

File "/home/saikat/Desktop/GOOG_PROJ/bgae/main.py", line 20, in DisplayForm 
    self.redirect(users.create_login_url(self.request.uri)) 
NameError: global name 'self' is not defined 

添加自己爲DisplayForm()的參數不利於對如何進行either.Any想法? 我正在使用python 2.7。開發環境是Ubuntu 12.04

回答

1

導入響應並從瓶中重定向並在DisplayForm中刪除self

from framework.bottle import route, template, request, error, debug, response, redirect 

在DisplayForm:

if user: 
    response.headers['Content-Type'] = 'text/plain' 
    response.write('Hello, ' + user.nickname()) 
else: 
    redirect(users.create_login_url(request.url)) 
+0

我照你asked.But我得到一個新的異常 'AttributeError異常( 「屬性 'URI' 沒有定義」,)' – 2014-09-29 06:27:12

+0

這就是爲什麼我認爲''從框架導入瓶'然後'bottle.response','bottle.redirect..'等更好' – Lipis 2014-09-29 06:34:43

+0

Ya也是這樣。我的代碼的當前快照: '@route('/')' 'def DisplayForm():' 'user = users.get_current_us er()' 'if user:' 'response.headers ['Content-Type'] ='text/plain'' 'response.write('Hello,'+ user.nickname())' 'else :' '重定向(users.create_login_url(request.uri))' 也按照您的建議做了所有的導入。(response,redirect) – 2014-09-29 06:36:38