2012-09-18 110 views
0

点击我的链接登录/注销,它工作正常(重新加载页面,更新链接文本)。请求处理程序不工作

我也有一个请求处理程序,它向我发送一封包含提交表单输入值的电子邮件,然后加载相同的页面。它也似乎工作正常(我收到了电子邮件,显示正确的值)。

问题是,如果我点击相同的登录/注销后提交表单,它不起作用。它确实带我到登录页面,但最后到了一个空白屏幕。它在地址栏中显示我的应用的网址,但其他所有内容都只是白色。

import os 
from google.appengine.ext.webapp import template 

import cgi 
import datetime 
import urllib 
import wsgiref.handlers 

from google.appengine.ext import db 
from google.appengine.api import users 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.api import mail 

class Greeting(db.Model): 
    author = db.StringProperty() 
    duties = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

class e_mail(db.Model): 
    address = db.StringProperty() 

def guestbook_key(guestbook_name= users.get_current_user()): 
    return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook') 

class MainPage(webapp.RequestHandler): 
    def get(self): 
     guestbook_name=self.request.get('guestbook_name') 
     greetings_query = Greeting.all().ancestor(
     guestbook_key(guestbook_name)).order('-date') 
     greetings = greetings_query.fetch(1000) 
     nickname = None 

     if users.get_current_user(): 
      url = users.create_logout_url(self.request.uri) 
      url_linktext = 'LOGOUT' 

      template_values = { 
       'greetings': greetings, 
       'url': url, 
       'url_linktext': url_linktext, 
      } 

      path = os.path.join(os.path.dirname(__file__), 'about.html') 
      self.response.out.write(template.render(path, template_values)) 
     else: 
      url = users.create_login_url(self.request.uri) 
      url_linktext = 'LOGIN' 

      template_values = { 
       'greetings': greetings, 
       'url': url, 
       'url_linktext': url_linktext, 
      } 

      path = os.path.join(os.path.dirname(__file__), 'about.html') 
      self.response.out.write(template.render(path, template_values)) 

class Email_SignUp(webapp.RequestHandler): 
    def post(self): 
     user = users.get_current_user() 
     guestbook_name=self.request.get('guestbook_name') 
     greetings_query = Greeting.all().ancestor(
     guestbook_key(guestbook_name)).order('-date') 
     greetings = greetings_query.fetch(1000) 
     nickname = None 

     if users.get_current_user(): 
      url = users.create_logout_url(self.request.uri) 
      url_linktext = 'LOGOUT' 

      template_values = { 
       'greetings': greetings, 
       'url': url, 
       'url_linktext': url_linktext, 
      } 

      e_mail.address = self.request.get('emailAdd') 

      path = os.path.join(os.path.dirname(__file__), 'about.html') 
      self.response.out.write(template.render(path, template_values)) 

      mail.send_mail(sender="Do Not Reply <[email protected]>", 
         to="Do Not Reply <[email protected]>", 
         subject=e_mail.address, 
         body=""" 
          Here is the test message        
          """) 

     else: 
      url = users.create_login_url(self.request.uri) 
      url_linktext = 'LOGIN' 

      template_values = { 
       'greetings': greetings, 
       'url': url, 
       'url_linktext': url_linktext, 
      } 

      e_mail.address = self.request.get('emailAdd') 

      path = os.path.join(os.path.dirname(__file__), 'about.html') 
      self.response.out.write(template.render(path, template_values)) 

      mail.send_mail(sender="Do Not Reply <[email protected]>", 
         to="Do Not Reply <[email protected]>", 
         subject=e_mail.address, 
         body=""" 
          Here is the test message        
          """) 

回答

1

通常情况下,用户访问的MainPage,与您共创登录/注销后重定向炫魅广东登录链接()完成。

但是,提交表单后,他们会得到一个登录链接,最终重定向回Email_Signup()。如果他们点击它,他们将尝试登录,然后重定向到Email_Signup(),它没有GET处理程序,所以它只显示一个空白页面。