2010-10-14 28 views
1

我想手动呈现一个表单的字段,这样我的设计师同事就可以操纵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}}字段。

+0

输入标签有一个'value'属性。例如,''input type =“text”maxlength =“30”name =“first_name”id =“id_first_name”class =“blabla”value =“initial value”>'那是你需要的吗? – JoshD 2010-10-14 03:51:45

+0

谢谢,但初始值来自服务器端,动态。编辑代码示例更清晰。 – 2010-10-14 03:56:30

+0

如果您在创建表单类实例时在'initial'字典中提供了'first_name',则在第一次显示表单时,该值将自动在'{{form.first_name}}'中提供。 – 2010-10-14 04:30:33

回答

4

有关于这个问题很有趣长期票。存在这样应该做你需要什么意见落实模板过滤器示例代码:

http://code.djangoproject.com/ticket/10427

+3

大家谁在这里从谷歌: '输入值=“{{form.field_name.value}}”>' – havelock 2015-04-20 13:21:53

0
<input value="{{form.name.data|default_if_none:'my_defaut_value'}}" ... /> 

你将不得不使用default_if_none因为绑定的字段的内含价值将不被存储在data.More details here

+0

也许我错过了一些东西,但“form.field.data”出现没有每次。 – 2010-10-17 19:38:06

+0

是的,我现在看到它在我身边也引发了一些问题。它在表单进入错误模式时起作用。但是,在我的回答结束时,作为第一个人回复,更多的细节(如果你有紧张和时间来读全票)可以在那张票上找到;) – 2010-10-21 14:45:37