7

以下は私のフォームコードです:

class FMessage(forms.Form):
    From = forms.CharField()
    To = forms.CharField()
    Subject = forms.CharField()
    Message = forms.CharField()

これは私のhtmlコードです:

<form method='POST' action='.'>
    {% csrf_token %}
    {{ form.as_p }}
    <input type='submit' value='submit'>
</form>

コードはフォームを表示することで正常に機能し、機能に問題はありませんが、フォームフィールドを次のdivようにhtmlでラップする必要があります。

<div id='mydiv'>
    <input ... />
<div>

どうすれば修正できますか?

4

2 に答える 2

16

組み込み<p>または<table>ラップされたフォームを実際に使用するのではなく、でラップされたフィールドを表示したいよう<div>'sです。次のように、フォームのフィールドを単純に繰り返すことができます。

{% if form %}
    <!-- Form Errors -->
    {% if form.errors %}
        <ul class="errors">
            {% for error in form.errors %}
                <li>{{ error }}</li>
            {% endfor %}
        </ul>
    {% endif %}

    <!-- Display Form -->
    <form>
    {% csrf_token %}
    {% for field in form %}
        <div class="mydiv">
            <label class="mylabel">{{ field.label }}</label>
            {{ field }}
        </div>
    {% endfor %}
    </form>
{% endif %}
于 2013-03-26T07:59:14.590 に答える
7

を使用してフォームをレンダリングしないでform.as_pください。たとえば、を使用して、フォームの各フィールドを表示する必要がありますform.to。この方法を使用すると、フィールド'to'をdivにラップできます。

 <div>{{ form.To}} </div>

詳細については、このリンクを参照してください

于 2013-03-26T06:34:27.983 に答える