代码之家  ›  专栏  ›  技术社区  ›  theomega

用于python的事件驱动WebFramework[关闭]

  •  1
  • theomega  · 技术社区  · 17 年前

    Hy 是否有针对python的基于事件驱动/事件的WebFramework?

    我的意思是 NitroGen 是为Erlang。

    您只需获得一些添加到网站的组件(比如按钮),并将一个python函数与按钮的“onclick”处理程序相关联,它就会被执行。它应该为我生成所有需要的HTML和JS核心(就像氮气一样),并支持所有需要的组件(如SPAN、P、Button、TextBox、PasswordField…) 如下代码:

    from pyjamas.ui.RootPanel import RootPanel
    from pyjamas.ui.Button import Button
    from pyjamas import Window
    
    def greet(fred):
        Window.alert("Hello, AJAX!")
    
    if __name__ == '__main__':
        b = Button("Click me", greet)
        RootPanel().add(b)
    

    得到 this .

    我找到的唯一框架是 PyJamas 但是它是为web应用程序(比如webmailers)而不是为web页面(谷歌需要索引内容,没有JS就可以阅读,功能有限)。有没有类似的睡衣或氮气?

    谢谢!

    6 回复  |  直到 15 年前
        1
  •  3
  •   Wheat    17 年前

    KSS(动能样式表)提供了类似于氮气的东西。尽管kss与nitrogen的区别在于,它定义了一种简单的特定于域的语言(DSL),用于声明如何将javascript事件绑定到客户端的HTML页面,而且这个DSL还可以声明事件需要通过Ajax触发服务器端组件。对于Nitrogen和Pyjamas,包含javascript如何与HTML交互的信息是从服务器端语言的数据结构推导出来的。

    http://kssproject.org/

    在kss项目描述中,“kss既有客户端javascript库,也有服务器端支持。客户端JavaScript库需要包含在您的页面中。它从服务器获取动态样式表,解析它们,并将一组操作绑定到浏览器事件和/或页面元素。它是干净的javascript代码,可以与其他干净的javascript库(如jquery或extjs)和平共存。”

    KSS可以独立于任何Python或服务器端代码使用。但是,kss中有一些工具可以将kss客户端事件绑定回python web框架中的服务器端可调用文件。有绑定可以将kss用于许多Python流行的Web框架(django、pylons、zope、plone、grok)。

        2
  •  1
  •   Alex Martelli    17 年前

    Zope 3 可能适合你的目的(当在扭曲的上面使用时,就像现在一样),也可能 Divmod Mantissa --它们当然都是事件驱动的,特别是尾数,还有任何东西 但是 “低层次”,尤其是Zope(对于后者,经常抱怨的是它太富有,太高层次,无法掌握;-)。

        3
  •  1
  •   Lennart Regebro    17 年前

    HTML不是事件驱动的,因此如果不使用Ajax,就不能构建这样的事件驱动的Web框架,而且您不希望这样做。所以答案是否定的,因为这样的事情是不可能的,

    我怀疑您的意思不是事件驱动的,而是您有一个系统,您在其中定义了一个模式并为您生成了表单。每个Web框架都有这样的功能。

    但是,对于喜欢组件和事件驱动开发的人,可以查看基于Zope工具包的Web框架,例如Grok、Repoze.bfg、Zope3,以及其中最新的一个:Bobo。

    http://grok.zope.org/ http://bfg.repoze.org/ http://wiki.zope.org/zope3/Zope3Wiki http://bobo.digicool.com/

    编辑:好的,显然问题只出在睡衣上,而不是使用javascript。 在这种情况下,如上文所述,KSS有效。它可以用于上面的框架!

        4
  •  1
  •   Nacho    15 年前

    尝试一下Nagare,我正在寻找同样的东西,Nagare可能是答案:

    http://www.nagare.org/

        5
  •  0
  •   apoirier    15 年前

    你的例子 Nagare :

    from nagare import presentation
    
    def greet(self):
        window.alert('Hello world!')
    
    class MyComponent(object):
        pass
    
    @presentation.render_for(MyComponent)
    def render(self, h, *args):
        return h.input(type='submit', onclick=greet)
    
        6
  •  -1
  •   sean riley    17 年前
    推荐文章