如何手动渲染设置了初始值的表单域?

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

【讨论】:

所有来自谷歌的人:&lt;input value=" form.field_name.value "&gt;【参考方案2】:
<input value="form.name.data|default_if_none:'my_defaut_value'" ... />

您将不得不使用default_if_none,因为绑定字段的隐式值不会存储在data. More details here中

【讨论】:

也许我错过了什么,但“form.field.data”每次都没有出现。 是的,我现在看到它也引发了我这边的一些问题。它在表单进入错误模式时起作用 :P 。但是,在我回答的结尾和第一个人的回答中,更多的细节(如果你有时间阅读完整的票)可以在这张票中找到;)

以上是关于如何手动渲染设置了初始值的表单域?的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2:创建表单时如何设置表单域的值

react 表单组件 异步渲染,值不会生效,需要手动改变对应组件的显示值

将表单域重置为初始状态

vue整个页面不能编辑

反应:如何从点击处理程序设置焦点

仅设置表单提交时输入的字段的主干模型属性