Raj*_*Raj 2 jinja2 flask wtforms flask-wtforms
我似乎无法弄清楚如何CheckboxInput在我的模板中渲染WTForms .当我尝试使用我的Jinja模板中的Flask渲染字段时,我收到此错误:
TypeError:call()只需要2个参数(给定1个)
该错误与{{ form.prefs(value='n') }}我的模板中使用的方式有关.WTForms文档中CheckBoxInput说"默认情况下,value = HTML属性为'y',除非在渲染时由value =另行指定." 无论是否指定值,我都会收到错误.
我似乎无法找到如何呈现简单的CheckBoxInput的示例.任何帮助表示赞赏.
这是我的表格:
class PreferencesForm(Form):
prefs = widgets.CheckboxInput()
Run Code Online (Sandbox Code Playgroud)
这是我的模板:
{% extends "base.html" %}
{% block content %}
<form method="POST" action="/user/prefs/">
<div>{{ form.prefs(value='n') }}</div>
<button type="submit" class="btn">Submit</button>
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
实际上你应该使用a BooleanField而不是直接使用widget:
class PreferencesForm(Form):
prefs = BooleanField()
Run Code Online (Sandbox Code Playgroud)
然后在你的模板中:
{{ form.prefs(value='n') }}
Run Code Online (Sandbox Code Playgroud)
一般的想法是使用表单类中的一个字段,它将自动分配适当的窗口小部件以供显示.和小部件:
... 用于将字段呈现为其可用表示的类,通常为XHTML.调用字段时,默认行为是将呈现委托给其窗口小部件.提供此抽象以便可以轻松创建窗口小部件以自定义现有字段的呈现.
强调我的
此外,窗口小部件需要字段实例来呈现自身:
def __call__(self, field, **kwargs):
if getattr(field, 'checked', field.data):
kwargs['checked'] = True
return super(CheckboxInput, self).__call__(field, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9644 次 |
| 最近记录: |