Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 是否有与Rails’&引用;闪光“;GAE(python)中的消息?_Google App Engine - Fatal编程技术网

Google app engine 是否有与Rails’&引用;闪光“;GAE(python)中的消息?

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

Ruby on Rails提供了一种方法,您可以设置一条消息,如
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消息

  • 如果您正在处理会话,请将消息粘贴到会话中

  • 如果您没有会话支持,则必须创建并使用cookie

    Cookie注意事项:

    • 在GAE中设置cookie非常困难,因为您基本上必须自己设置标题。(如果GAE中内置了用于设置cookie的API,请更正此问题;这是一个社区wiki)。请注意编码和其他限制(分号表示cookie值的结尾)。找到一个编写良好的函数来编写cookie并使用它
    • 请注意浏览器cookie的长度限制
    • 如果发送一个预设消息,请考虑只为cookie中的消息设置一个唯一的标识符,而不是实际的消息。您将不会遇到长度或编码的问题!
    • 如果消息是可变的,一种可能的解决方法与上面的要点类似,但是在设置消息时推送数据存储对象,将其标识符写入cookie,在显示消息时,在数据存储中查找它,然后擦除cookie,而不是预设消息
  • 无论如何,当您显示flash消息时,请立即从会话或cookie中清除消息。

    嗯,webapp2确实有:

    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 %}