我正在尝试手动渲染表单的字段,以便我的设计人员可以操作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 :(得分:4)
关于这个问题有一个有趣的长期票。有一些示例代码可以在评论中实现模板过滤器,以满足您的需求:
答案 1 :(得分:0)
<input value="{{form.name.data|default_if_none:'my_defaut_value'}}" ... />
您必须使用default_if_none
,因为绑定字段的隐含值不会存储在data.
More details here