在W3C上验证时,django将输入字段包装在中

时间:2014-10-04 12:15:43

标签: html django django-forms django-templates w3c-validation

这是我的注册表格的模板代码

<form id="user_form" method="post" action="/accounts/register/">
    {% csrf_token %}
    {{ user_form }}
    <br>
    <input type="submit" class="btn btn-default pull-right" value="Register">
    <br>
</form>

当我检查我的实时网站的html或我的本地环境时,我看到以下html

<form id="user_form" method="post" action="/accounts/register/">
   <input type="hidden" name="csrfmiddlewaretoken" value="blah">
   <label for="id_username">Username:</label><input class="form-control" id="id_username" name="username" type="text">
   <label for="id_email">Email:</label><input class="form-control" id="id_email" name="email" type="email">
   <label for="id_password">Password:</label><input class="form-control" id="id_password" name="password" type="password">
    <br>
    <input type="submit" class="btn btn-default pull-right" value="Register">
    <br>
</form>

但是当我在W3C上验证时,我的错误是因为我的表单

Stray start tag tr. <tr><th><label for="id_username">Username:</label></th><td><inp…

我看到标记已经改变

<form id="user_form" method="post" action="/accounts/register/">
    <input type='hidden' name='csrfmiddlewaretoken' value='blah' />
    <tr><th><label for="id_username">Username:</label></th><td><input class="form-control" id="id_username" name="username" type="text" /></td></tr>
    <tr><th><label for="id_email">Email:</label></th><td><input class="form-control" id="id_email" name="email" type="email" /></td></tr>
    <tr><th><label for="id_password">Password:</label></th><td><input class="form-control" id="id_password" name="password" type="password" /></td></tr>
    <br>
    <input type="submit" class="btn btn-default pull-right" value="Register">
    <br>
</form>

1 个答案:

答案 0 :(得分:0)

你只需要使用:

{{ user_form.as_p }}

这将在<p>标记内呈现表单的标签和字段。 docs为您提供了一些关于输出的选项,或者您可以通过迭代字段来手动渲染表单,如下所示:

    <!-- first output any hidden fields first -->
    <div style="display: none;">
        <!-- I've wrapped this in a div for W3C validation -->
        {{ user_form.hidden_fields }}
    </div>

{% for field in user_form.visible_fields %}
    <div class="some-class">
        {{ field.label_tag }}
        {{ field }}
    </div><!--/.some-class-->
{% endfor %}

我建议尝试上面的操作,只是为了试验手动渲染。