用于extjs 3的zope3 ext.direct-服务器端堆栈。
falkolab.ext3.direct的Python项目详细描述
zope3 ext.direct-extjs 3的服务器端堆栈。
如何使用它?
让我们注册api和视图:
>>> from zope.configuration import xmlconfig >>> context = xmlconfig.string(""" ... <configure ... xmlns="http://namespaces.zope.org/zope" ... xmlns:extdirect="http://namespaces.zope.org/extdirect" ... > ... <include package="falkolab.ext3.direct" file="meta.zcml" /> ... ... <extdirect:api ... for="zope.app.folder.interfaces.IFolder" ... namespace = "my.app" ... /> ... ... <extdirect:view ... for="zope.app.folder.interfaces.IFolder" ... class="falkolab.ext3.direct.testing.AlbumList" ... permission="zope.ManageContent" ... name="albumlist" ... /> ... ... <extdirect:view ... for="zope.app.folder.interfaces.IFolder" ... class="falkolab.ext3.direct.testing.Contact" ... permission="zope.ManageContent" ... /> ... </configure> ... """)
直接API:
>>> print http(r""" ... GET /@@directapi HTTP/1.1 ... Authorization: Basic bWdyOm1ncnB3 ... """) HTTP/1.1 200 Ok Cache-Control: no-cache Content-Length: ... Content-Type: text/javascript;charset=utf-8 Expires: ... Pragma: no-cache <BLANKLINE> Ext.namespace('my.app'); my.app.REMOTING_API={"url": "http://localhost/@@directrouter", "namespace": "my.app", "type": "remoting", "actions": {"Contact": [{"name": "getInfo", "len": 1}], "albumlist": [{"formHandler": true, "name": "add", "len": 0}, {"name": "getAll", "len": 0}]}};
自动添加提供程序:
>>> print http(r""" ... GET /@@directapi?add_provider HTTP/1.1 ... Authorization: Basic bWdyOm1ncnB3 ... """) HTTP/1.1 200 Ok Cache-Control: no-cache Content-Length: ... Content-Type: text/javascript;charset=utf-8 Expires: ... Pragma: no-cache <BLANKLINE> Ext.namespace('my.app'); my.app.REMOTING_API={"url": "http://localhost/@@directrouter", "namespace": "my.app", "type": "remoting", "actions": {"Contact": [{"name": "getInfo", "len": 1}], "albumlist": [{"formHandler": true, "name": "add", "len": 0}, {"name": "getAll", "len": 0}]}}; Ext.Direct.addProvider(my.app.REMOTING_API);
和直接请求hanling(有关添加,请参阅router.txt):
>>> print http(r""" ... POST /@@directrouter HTTP/1.1 ... Authorization: Basic bWdyOm1ncnB3 ... Content-Length: 71 ... Content-Type: application/json; charset=UTF-8 ... Referer: http://localhost/ ... ... {"action":"albumlist","method":"getAll","data":[],"type":"rpc","tid":1}""") HTTP/1.1 200 Ok Content-Length: 89 Content-Type: text/javascript <BLANKLINE> {"action": "albumlist", "tid": 1, "type": "rpc", "method": "getAll", "result": [1, 2, 3]}
更改
1.1.0(2010-12-23)
- 支持Python2.6的更改
1.0.1(2010-11-10)
- 删除了对zope.app.intid的依赖关系
- 更改为支持zope.component>;=3.6.0
- 为simplejson编码器添加skipkeys=true以防止 引发类型错误
1.0.0A(2009-08-20)
- 初次发布。