跳转到主要内容

为Grok提供使用z3c.form的CRUD表单

项目描述

Crud

此模块为您提供了一个抽象基类,用于创建CRUD表单。这些表单默认提供对象的表格视图,其中可以就地编辑对象的属性。有关详细信息,请参阅ICrudForm接口。

>>> from megrok.z3cform.crud import crud

表单注册

模型

我们设置了一些模型作为表单上下文

>>> import grokcore.component as grok
>>> from zope import interface, schema

>>> class IPerson(interface.Interface):
...    name = schema.TextLine(title=u"Name")
...    age = schema.Int(title=u"Age")

>>> class Person(grok.Context):
...    grok.implements(IPerson)
...    name = schema.fieldproperty.FieldProperty(IPerson['name'])
...    age = schema.fieldproperty.FieldProperty(IPerson['age'])
...
...    def __init__(self, name, age):
...        self.name = name
...        self.age = age

>>> class IPersonContainer(interface.Interface):
...    pass

>>> class PersonContainer(dict):
...    grok.implements(IPersonContainer)

为此测试,我们将我们的人名作为存储中的键

>>> storage = PersonContainer()
>>> storage['Peter'] = Person(u'Peter', 16)
>>> storage['Martha'] = Person(u'Martha', 32)

我们使用megrok.z3cform.base来声明表单,它与grok.View非常相似

>>> import megrok.z3cform.base as z3cform

>>> class TestForm(crud.CrudForm):
...    grok.context(IPersonContainer)
...
...    update_schema = IPerson
...
...    def get_items(self):
...        return sorted(storage.items(), key=lambda x: x[1].name)
...
...    def add(self, data):
...        person = Person(**data)
...        storage[str(person.name)] = person
...        return person
...
...    def remove(self, (id, item)):
...        del storage[id]

理解Grok和查询

我们让Grok注册组件

>>> grok.testing.grok_component('form', TestForm)
True

现在,我们可以正常查询它

>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest()

>>> from zope.component import getMultiAdapter
>>> myform = getMultiAdapter((storage, request), name="testform")

>>> myform
<TestForm object at ...>
>>> print myform()
<form action="http://127.0.0.1" method="post"
        enctype="multipart/form-data" class="form-testform">
...

变更日志

0.1

  • 初始发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分发

megrok.z3cform.crud-0.1.tar.gz (8.3 kB 查看散列值)

上传时间:

由...