2014-10-04 2 views
0

Вот мой код шаблона для формы регистраПри проверке на W3C Джанго оборачивают поля ввода в <tr><th>

<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> 

ответ

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 %} 

Я рекомендовал бы давая выше попробовать, просто экспериментировать с ручным рендеринга.

+0

as_p работал спасибо! Все еще сбиты с толку, почему искатель w3c видел эту дополнительную разметку, но меня не было, и я тестировал в нескольких браузерах. – beansontoast