Ruby on Rails有一种方法,您可以设置一条消息,如flash[:notice]
和flash[:error
,用户将在下一个机会看到该消息。这对于在用户重定向时(例如回到登录页面)通知用户登录失败等情况特别有用。在GAE(python)中是否存在等价于Rails的“flash”消息?
在Google App Engine(Python API)上实现此功能有规范还是常用的方法吗? (假设Django使用的是而不是。)
Ruby on Rails有一种方法,您可以设置一条消息,如flash[:notice]
和flash[:error
,用户将在下一个机会看到该消息。这对于在用户重定向时(例如回到登录页面)通知用户登录失败等情况特别有用。在GAE(python)中是否存在等价于Rails的“flash”消息?
在Google App Engine(Python API)上实现此功能有规范还是常用的方法吗? (假设Django使用的是而不是。)
我喜欢llazzaro关于模板的建议。
故事的另一半是能够维持请求之间的Flash消息。
如果您正在处理会话,请将该消息粘贴到会话中。
如果您没有会话支持,则必须创建使用cookie。
饼干警告:
无论如何,当你显示的提示信息,立即清除从会话或cookie中的消息。
Webapp framework,GAE附带的简单Web应用程序框架没有提供类似的东西。
专为Google App Engine构建的一个酷炫框架,它提供Flash消息是Tipfy。
,看一下tipfy.ext.session模块:
set_flash(数据,键=无, 后端=无,** kwargs)
设置一个闪光灯消息。 Flash消息在第一次读取时被删除。
您如何看待扩展模板并将“flash”参数设置为模板?
例如,基本模板:
<html... bla blah ...
<body ... bla blah
{% if flash %} {{flash}} {% endif %}
<!-- more html here -->
{% block content %}
your dynamic block here...
{% endblock %}
现在每个模板
{% extends "base_template.html" %}
{% block content %}
{% if object %} success to edit : {{object.title }} {% endif %}
{% endblock %}
处理程序应该通过闪存参数去模板
,它将在基本模板中使用。
好,而webapp2确实有:
def add_flash(self, value, level=None, key='_flash'):
和:
def get_flashes(self, key='_flash'):
存储邮件,读取时删除它们。为了向用户展示它们,您只需在基本请求处理程序render_template
方法中设置一个变量。就像这样:
def render_template(self, template, context=None):
context = context or {}
extra_context = {
'uri_for': self.uri_for,
'flashes': self.session.get_flashes(),
'user': self.current_user,
}
# Only override extra context stuff if it's not set by the template:
for key, value in extra_context.items():
if key not in context:
context[key] = value
rendered = self.jinja2.render_template(template, **context)
self.response.write(rendered)
而在你的模板中,使用'闪烁'变量来显示你喜欢的消息。
活生生的例子在这里:https://simpleauth.appspot.com/
和示例的源:http://code.google.com/p/gae-simpleauth/source/browse/example/handlers.py
顺便说一句,与simpleauth亚历克斯伟大的工作!
是的,看看这个功能get_flashes(key='_flash')[source]
在这个对象:class webapp2_extras.sessions.SessionDict(container, data=None, new=False)[source]
返回一个提示信息。 Flash消息在第一次读取时被删除。 参数: key - 存储在会话中的闪存密钥的名称。默认是'_flash'。 返回:
存储在闪存中的数据或空列表。
我不知道这个框架,它似乎很酷! – llazzaro 2011-02-09 04:38:03