django模型形式与bootstrap不起作用

时间:2015-03-14 18:15:19

标签: django twitter-bootstrap

我正在使用django建立一个网站,但我的模型有问题。这是我的html文件中的工作表单代码:

<form class="form-horizontal" role="form" method="post" action="">
    <div class="form-group">
        {% csrf_token %}
        {{ form.as_p }}
    </div>
    <input type="submit" value="Inschrijven!" class="btn btn-primary" />
</form>

如果我使用此代码,一切正常,当我填写表格并按发送时,我可以看到管理页面中的信息。

我现在尝试使用bootstrap设置样式:

<form class="form-horizontal" role="form" method="post" action="">
    {% csrf_token %}
    {% for field in form %}
    <div class="form-group">
        <label class="col-sm-4 control-label">{{ field.label }}</label>
        <div class="col-sm-4">
            <input type="text" class="form-control" placeholder="{{field.label}} ingeven">
        </div>
    </div>
    {% endfor %}
    <input type="submit" value="Inschrijven!" class="btn btn-primary">
</form>

现在我有一个很好的引导程序布局,但如果我填写表单,我就无法在管理员页面上看到这些信息。 有人知道我如何解决这个问题,所以我可以保持良好的布局,仍然可以使用我的表格吗?

1 个答案:

答案 0 :(得分:0)

当您输出Django HTML表单时,您会注意到它创建了具有以下 ID Name 属性的输入元素。

例如

class MyForm...
  name = ...
  age = ...

HTML

<input type='text' id='id_name' name='name' ...
<input type='text' id='id_age' name='age'...

要解决您的问题,请在HTML中将以下属性添加到您正在生成的HTML输入字段

id="id_{{field.name}}" name="{{field.name}}"

<强>推理: 提交表单后,浏览器将以name=value对的形式发送表单编码数据,然后以request.POST中的dict形式到达,当输入Django表单时,它将填写表单将Django表单属性名称与POST值匹配。