Google app engine 是否有与Rails’&引用;闪光“;GAE(python)中的消息?
Ruby on Rails提供了一种方法,您可以设置一条消息,如Google app engine 是否有与Rails’&引用;闪光“;GAE(python)中的消息?,google-app-engine,Google App Engine,Ruby on Rails提供了一种方法,您可以设置一条消息,如flash[:notice]和flash[:error,用户将在下一次机会看到这些消息。当用户被重定向(例如返回登录页面)时,它特别适用于通知用户登录失败等情况 在Google App Engine(Python API)上有没有一种规范的或通用的方法来实现这一点呢?(假设没有使用Django。),GAE附带的简单web应用程序框架并没有提供类似的功能 一个专为谷歌应用程序引擎(GoogleAppEngine)构建的、提供Flash
flash[:notice]
和flash[:error
,用户将在下一次机会看到这些消息。当用户被重定向(例如返回登录页面)时,它特别适用于通知用户登录失败等情况
在Google App Engine(Python API)上有没有一种规范的或通用的方法来实现这一点呢?(假设没有使用Django。),GAE附带的简单web应用程序框架并没有提供类似的功能
一个专为谷歌应用程序引擎(GoogleAppEngine)构建的、提供Flash消息的酷框架是。查看以下模块: 设置闪存(数据,按键=无, 后端=无,**kwargs) 设置快闪消息。第一次读取快闪消息时会将其删除
您认为如何扩展模板并将“flash”参数设置为模板 例如,基本模板:
<html... bla blah ...
<body ... bla blah
{% if flash %} {{flash}} {% endif %}
<!-- more html here -->
{% block content %}
your dynamic block here...
{% endblock %}
您的处理程序应该将flash param传递给模板,它将用于基本模板。我喜欢llazzaro关于模板的建议 故事的另一半是能够在请求之间维护flash消息
- 在GAE中设置cookie非常困难,因为您基本上必须自己设置标题。(如果GAE中内置了用于设置cookie的API,请更正此问题;这是一个社区wiki)。请注意编码和其他限制(分号表示cookie值的结尾)。找到一个编写良好的函数来编写cookie并使用它
- 请注意浏览器cookie的长度限制
- 如果发送一个预设消息,请考虑只为cookie中的消息设置一个唯一的标识符,而不是实际的消息。您将不会遇到长度或编码的问题!
- 如果消息是可变的,一种可能的解决方法与上面的要点类似,但是在设置消息时推送数据存储对象,将其标识符写入cookie,在显示消息时,在数据存储中查找它,然后擦除cookie,而不是预设消息
def add_flash(self,value,level=None,key=''u flash'):
以及:
def get_flash(self,key=''u flash'):
存储您的消息并在读取时删除它们。要向用户显示它们,您只需在基本请求处理程序render\u template
方法中设置一个变量。类似于以下内容:
def render_模板(self,template,context=None):
上下文=上下文或{}
额外上下文={
'uri_for':self.uri_for,
“flash”:self.session.get_flash(),
“用户”:self.current\u用户,
}
#仅在模板未设置的情况下覆盖额外的上下文内容:
对于键,额外上下文中的值。items():
如果键不在上下文中:
上下文[键]=值
rendered=self.jinja2.render_模板(模板,**上下文)
self.response.write(呈现)
在模板中,使用“flash”变量以您喜欢的方式显示消息
此处的文档:
现场示例如下:
以及示例的来源:
顺便说一句,simpleauth Alex做得很好!是的,看看这个对象中的函数
get\u flash(key=''u flash')[source]
:class webapp2\u extras.sessions.SessionDict(container,data=None,new=False)[source]
返回快闪消息。第一次读取快闪消息时,快闪消息将被删除。
参数:
key–会话中存储的闪存密钥的名称。默认值为“\u flash”。
返回:存储在闪存或空列表中的数据
{% extends "base_template.html" %}
{% block content %}
{% if object %} success to edit : {{object.title }} {% endif %}
{% endblock %}