如何手动渲染一个初始值设置的表单字段?

2 投票
2 回答
4929 浏览
提问于 2025-04-16 05:28

我想手动渲染一个表单的字段,这样我的设计同事就可以在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 }}这样的字段可用。

2 个回答

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

你需要使用 default_if_none,因为一个绑定字段的隐式值不会被存储在 data 里。这里有更多细节

4

这里有一个有趣的、一直存在的问题。评论里有一些示例代码,可以用来实现一个模板过滤器,应该能满足你的需求:

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

撰写回答