Python 金字塔 - 如何使用复选框和单选按钮

1 投票
2 回答
1893 浏览
提问于 2025-04-16 14:14

我一直在尝试用Pyramid框架制作一个包含复选框和单选按钮的表单,但我不知道该怎么正确地做。

我在使用pyramid_simpleform。到目前为止,我已经能通过循环把复选框放到表单上,但即使我设置了checked=True,也无法让任何复选框被选中。

% for item in groups:
${form.checkbox(name="groups",label=item, value=item, checked=True)}
% endfor

我知道还有更好的方法来实现这个功能。有没有可以参考的例子?我在Pyramid的文档中看到的例子都是简单的文本字段,至今还没有找到关于单选按钮或复选框的例子。

2 个回答

1

我使用 FormRenderers 来输出表单,但在使用复选框时遇到了一些问题。于是我写了一个类,来替换我所有视图中的 simple_form 的 FormRenderer:

# -*- coding: utf-8 -*-
from pyramid_simpleform.renderers import FormRenderer as OldFormRenderer
from webhelpers.html import tags

class FormRenderer(OldFormRenderer):
    def checkbox(self, name, value="1", checked=False, label=None, id=None, 
             **attrs):
        """
        Outputs checkbox input.
        """
        id = id or name
        return tags.checkbox(name, value, checked, label, id, **attrs)
1

你有没有试过在表单的构造函数里加上

defaults={"groups" : True}

比如说,在pyramid_simpleform的文档里是这样写的:

form = Form(request, MySchema, defaults={"name" : "foo"})

撰写回答