2016-03-26 4 views
0

Я пытаюсь отобразить отдельные поля формы Django один за другим, так как я хочу изменить определенные свойства.Django визуализировать отдельное поле формы, не отображающее

Это мои forms.py. Для ясности я уменьшил его до одного поля.

from django import forms 

class NameForm(forms.Form): 
    name = forms.CharField(max_length=100) 

Он отлично работает, если полностью визуализирую форму. Мой HTML код -

<form style="text-align:center; padding-bottom: 2%" action="/contact/" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
    {{ form }} 
</form> 

Источник страницы для указанного выше кода приходит, как это -

<p><label for="id_name">Name:</label> <input id="id_name" maxlength="100" name="name" type="text" /></p> 

Проблема возникает, когда я пытаюсь сделать отдельные поля, как с помощью {{ form.name }} вместо {{form}}. Источник страницы для этого показывает пустой. HTML не сформирован.

Я также попробовал -

{% for field in form %} 
    <div class="fieldWrapper"> 
     {{ field }} 
    </div> 
{% endfor %} 

И HTML оказывается за это как -

   <div class="fieldWrapper"> 
        &lt; 
       </div> 

       <div class="fieldWrapper"> 
        p 
       </div> 

       <div class="fieldWrapper"> 
        &gt; 
       </div> 

       <div class="fieldWrapper"> 
        &lt; 
       </div> 

       <div class="fieldWrapper"> 
        l 
       </div> 

       <div class="fieldWrapper"> 
        a 
       </div> 

       <div class="fieldWrapper"> 
        b 
       </div> 

       <div class="fieldWrapper"> 
        e 
       </div> 

       <div class="fieldWrapper"> 
        l 
       </div> 

       <div class="fieldWrapper"> 

       </div> 

       <div class="fieldWrapper"> 
        f 
       </div> 

       <div class="fieldWrapper"> 
        o 
       </div> 

       <div class="fieldWrapper"> 
        r 
       </div> 

       <div class="fieldWrapper"> 

Я не разместил полный исходный код HTML, но кажется, что цикл печатает каждый символ HTML-код, отображаемый из формы, как если бы мы объединили первые несколько символов, напечатанных на нем, как HTML-код:

<p><label for> 

и т. Д.

Пожалуйста, объясните, почему это происходит.

ответ

1

Проверьте, что вы возвращаете с вашего вида. Это может случиться, если ваше представление возвращает форму .as_p. Это может быть исправлено путем возврата только формы. Он должен работать! Если он все еще не работает, просмотрите сообщения и весь шаблон.

+0

Да, вы правы. Мой взгляд возвращал 'form.as_p'. Так глупо от меня. Большое спасибо. –

+0

@JyotmanSingh Добро пожаловать! –

0

Если вы знаете имя поля, вы можете сделать это по отдельности так:

<div class="fieldWrapper"> 
    {{ form.myfield.errors }} 
    <label for="{{ form.myfield.id_for_label }}">Label for myfield : </label> 
    {{ form.myfield }} 
</div> 

(вы также можете использовать {{}} form.myfield.label_tag для метки, если вы определили его в класс Form)

в противном случае, если вы хотите иметь для вас может сделать это так:

{% for field in form %} 
    <div class="fieldWrapper"> 
     {{ field.errors }} 
     {{ field.label_tag }} {{ field }} 
    </div> 
{% endfor %} 

Это хорошо работает для меня. Если у вас все еще есть проблема, это должно быть в остальной части вашего кода, я думаю. Покажите шаблон ввода, если это так :)

+1

Я уже пробовал '{{form.myfield}}' и другие альтернативы, но они не отображают никакого html –

+0

Покажите весь код тогда :) – AlexandreP