任何简单的方法在Django中做'疯狂的lib'风格表单字段?

时间:2011-07-12 15:36:52

标签: python django django-forms

我很好奇为我的django形式制作一个“疯狂的lib”风格形式(参见http://www.lukew.com/ff/entry.asp?1007)。我可以通过迭代所有表单字段并手工布置文本来完成它,例如<li>There should be {{ form.num_widgets }} widgets</li>但是我不喜欢表单字段上的标签是如何未使用的,它是如何从表单定义文件和模板文件中部分传播的,以及它是如何难以实现的。

在django中有没有neater / all-in-one-way方式做疯狂的lib表格?我将窗口小部件的label设置为"There should be %(something)s widgets"的内容,它会将%(something)s替换为字段的呈现形式,以便我可以调用{{form.as_p}它会自动运作吗?

1 个答案:

答案 0 :(得分:2)

这是自定义模板代码的一个很好的案例,如下所示:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

您可以轻松创建一个标记,该标记可以执行以下操作:

@register.simple_tag
def madlibfield(formfield):
   return formfield.label % formfield

然后,您可以在模板中将其用作

{% madlibfield form.num_widgets %}

如果你想获得更好的输出(比如复制as_p功能),那么在标签中这样做是微不足道的。