2009-06-30 34 views
1

Hy, 是否有Python的基于事件驱动器/事件的Web框架?用于Python的事件驱动的Web框架

我的意思是类似NitroGen是erlang。

您只需将一些组件添加到网站(如按钮)并将python函数与按钮的“onclick”处理程序关联并执行即可。它应该产生对我来说(就像氮所做的)所有需要的HTML和JS核心,支持所有需要的组件(如跨度,P,按钮,文本框,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应用程序(比如Webmailer)而不是Web-Pages(其中谷歌需要内容索引以及哪些应该可读,没有js,功能有限) 。那么有没有类似睡衣或氮气的东西?

谢谢!

回答

3

KSS(动力学样式表)提供类似于氮东西。尽管KSS与NitroGen的不同之处在于它定义了一个简单的特定于域的语言(DSL),用于声明JavaScript事件应该如何绑定到客户端的HTML页面,并且此DSL还可以声明事件需要触发服务器端通过AJAX组件。使用NitroGen和睡衣,包含JavaScript如何与HTML进行交互的信息是从服务器端语言的一部分数据结构中推导出来的。

http://kssproject.org/

从KSS项目介绍,“KSS既有客户端JavaScript库和服务器端支持。客户端Javascript库必须包含在您的网页。它获取动力学样式表从服务器解析它们并将一组操作绑定到浏览器事件和/或页面元素,它是干净的Javascript代码,可以与其他干净的Javascript库(如JQuery或ExtJS)和平共处。

KSS可以独立于任何Python或服务器端代码使用。但是,KSS中有一些工具将KSS客户端事件绑定到Python Web框架中的服务器端可调参数。有许多Python的流行Web框架(Django,Pylons,Zope,Plone,Grok)使用KSS绑定。

-1
+0

及其低级,即时搜索知道我想放在HTML页面上的组件,并生成所需的html和js代码以将其连接到我的python代码。 – theomega 2009-06-30 22:53:12

1

HTML不是事件驱动的,所以你不能使用事件驱动的Web框架而不使用Ajax,而你并不想这样做。所以答案是否定的,因为这样的事情根本不可能,

我怀疑你的意思,而不是事件驱动的是,你有一个系统,你可以定义一个模式并为你生成表格。每个Web框架都有。

但是您喜欢组件和事件驱动开发,请查看基于Zope Toolkit的Web框架,即Grok,Repoze.BFG,Zope3和其中最新的:Bobo。

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

编辑:OK,显然这个问题是只与睡衣,不使用Javascript。 在这种情况下,KSS,如上所述的工作。它可用于上面的框架! (上扭曲的顶部时,它现在可能)

+0

HTML本身并不是事件驱动的,但可以使用ajax。所以当我在我的问题中写道,即时通讯寻找一个工具包来生成HTML和JS。但简单的(非动态的,基于事件的内容)应该在html中用于seo puroposes。我希望你现在明白。 – theomega 2009-07-01 07:27:41

1

Zope 3可能适合你的目的,并因而可能Divmod Mantissa - 他们肯定都强烈事件驱动,尤其是尾数,和_any_thing “低级别“,特别是Zope(事实上,对后者的频繁抱怨是,它太高级了,掌握不了);-)。

0

你的榜样与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) 
相关问题