祝你今天过得愉快。我有一个我不能解决的问题。
在我创建的应用程序中,碰巧有3个文件: main、config和home.html
配置文件用于获取用户数据并将其添加到字典中。如果用户不存在于数据存储中,他补充道。
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from google.appengine.api.app_identity import get_default_version_hostname
from google.appengine.ext import ndb
url = get_default_version_hostname()
# BANCO DE DADOS PARA SALVAR OS USUARIOS
class Usuarios(ndb.Model):
usuario = ndb.StringProperty()
email = ndb.StringProperty()
openID = ndb.StringProperty()
date = ndb.DateTimeProperty(auto_now_add=True)
tipo = ndb.StringProperty()
@classmethod
def get_email(cls, email):
return cls.query(cls.email == email)
########### FUNÇÃO QUE CHAMA O LOGIN ########
def Redir():
from google.appengine.api import users
user = users.get_current_user()
if users.is_current_user_admin():
redir = 'http://' + url + '/admin'
else:
redir = None
return redir
def Geral():
from google.appengine.api import users
user = users.get_current_user()
providers = {
'Google' : 'https://www.google.com/accounts/o8/id',
'Yahoo' : 'yahoo.com',
}
rt = {
'titulo' : 'BETA HCBravin',
'version' : '14.11.10',
'url' : 'http://' + url,
}
# O USUARIO ESTA LOGADO?
if user:
# O USUARIO E UM ADMINISTRADOR?
if users.is_current_user_admin():
dtipo = 'Admin'
else:
dtipo = 'Aluno'
# O USUARIO EXISTE NO BANCO DE DADOS?
quser = Usuarios.get_email(user.email())
buser = quser.get()
if not buser:
dbuser = Usuarios(usuario = user.nickname(), email = user.email(), openID = user.user_id(), tipo = dtipo)
dbuser.put()
if buser:
if buser.tipo == 'Professor':
dtipo = 'Professor'
else:
dtipo = 'Aluno'
rt.update({
'usuario': user.nickname(),
'email': user.email(),
'openID': user.user_id(),
'logout_url': users.create_logout_url('/'),
'user_tipo': dtipo,
})
else: # let user choose authenticator
#login_url = {'usuario': None, 'logout_url': None}
login_url = {}
for name, uri in providers.items():
login_url[name] = users.create_login_url(dest_url = ('/usuario') ,federated_identity=uri)
rt.update(login_url)
return rt
########## ############主文件是渲染home.html的应用程序的主文件
import os
import webapp2
import sys
from config import *
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
Geral = Geral()
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.out.write(template.render('home.html', Geral))
app = webapp2.WSGIApplication([
('/', MainHandler),
], debug=True)home.html只有一个值,即获取变量{{ email }}并打印它(逻辑上,这还不是全部。使用最简单的方法)
问题是:当我以用户身份登录时,它完美地显示了电子邮件。但是,如果我亲热,用户静音,而不是显示电子邮件“新”不断弹出旧的电子邮件。
即使我刷新了页面,这一点仍然存在。
发布于 2014-11-28 02:23:02
处理程序方法之外的代码只在实例启动时运行,而不是每次请求一次。因此,在第一次调用Geral = Geral()之后,您的调用不会对访问者重复。
您应该将这一行移动到get方法中(并可能将左侧的名称更改为与function- name不同!)
https://stackoverflow.com/questions/27172219
复制相似问题