如何手动渲染设置了初始值的表单域?
Posted
技术标签:
【中文标题】如何手动渲染设置了初始值的表单域?【英文标题】:How can you manually render a form field with its initial value set? 【发布时间】:2011-04-25 04:48:33 【问题描述】:我正在尝试手动呈现表单的字段,以便我的设计师同事可以在 html 中操作输入元素,而不是在 Python 源代码中苦苦挣扎。
即。而不是像这样声明表单字段...
form.first_name
..我确实有...
<label for="id_first_name">Your name:</label>
<input type="text" value=" form.first_name.somehow_get_initial_value_here " name="first_name" id="id_first_name" class="blabla" maxlength="30" >
% if form.first_name.errors %<span>*** form.first_name.errors|join:", " </span>% endif %
问题是在第二种方法中似乎没有办法获取字段的初始值。 form.first_name 语句确实使用正确的初始值呈现输入元素,但不知何故,当您使用 form.first_name.initial_value 字段时想要手动渲染表单。
【问题讨论】:
输入标签有一个value
属性。 ` ` 例如。这是你需要的吗?
谢谢,但初始值来自服务器端,是动态的。将代码示例编辑得更清楚。
如果您在创建表单类实例时在initial
dict 中提供了first_name
,则在第一次显示表单时会自动在 form.first_name
中提供该值。
如果唯一的问题是放置样式,您可以在代码的表单字段中添加 css 类。
看这里:***.com/questions/604266/…
【参考方案1】:
关于这个问题有一张有趣的长期票。有示例代码可以在 cmets 中实现模板过滤器,可以满足您的需要:
http://code.djangoproject.com/ticket/10427
【讨论】:
所有来自谷歌的人:<input value=" form.field_name.value ">
【参考方案2】:
<input value="form.name.data|default_if_none:'my_defaut_value'" ... />
您将不得不使用default_if_none
,因为绑定字段的隐式值不会存储在data.
More details here中
【讨论】:
也许我错过了什么,但“form.field.data”每次都没有出现。 是的,我现在看到它也引发了我这边的一些问题。它在表单进入错误模式时起作用 :P 。但是,在我回答的结尾和第一个人的回答中,更多的细节(如果你有时间阅读完整的票)可以在这张票中找到;)以上是关于如何手动渲染设置了初始值的表单域?的主要内容,如果未能解决你的问题,请参考以下文章