5

django アプリのスタイルを設定していますが、フォームのスタイル設定に問題があります。forms.py に連絡先フォームがあり、それをテンプレートで使用しています。

<form class="form-contact" action="" method="POST">
{% csrf_token %} 
<input type="text" name="Name" id="id_name" value="{{form.name}}" />
<input type="submit" value="Submit"  class="btn btn-primary">
</form>

それは機能していません。私もこれを試しましたが、まだうまくいきません。スタイル付きフィールドを表示しますが、情報を取得しません ( {{form.errors}} の下にメッセージが表示されます。

<form class="form-contact" action="" method="POST">
{% csrf_token %} 
{% for field in form %}
<fieldset class="form-group">
    <label class="control-label" for="id_{{ field.name }}">{{ field.label }}</label>
         <div class="form-control">
        <input type="text" class="form-control"
            name="{{ field.label }}"
            id="{{ field.name }}"
            value="{{ field.name }}" >
         {{ field }} 
        <p class="help-text">{{ field.help_text }} </p>
       </div>
</fieldset>
{% endfor %}
   <input type="submit" value="Submit"  class="btn btn-primary">
</form>

どんなヒントも高く評価されます。よろしく。

編集: この 2 番目のコードは、実際には各フォーム フィールドに対して 2 つの入力フィールドを表示しています。2 番目の入力を入力すると、フォームは機能しますが、この 2 番目の入力にはスタイリングがありません...

4

3 に答える 3

19

「編集: この 2 番目のコードは、実際にはフォーム フィールドごとに 2 つの入力フィールドを表示しています。」

最初の入力は、<input>明示的に記述したタグによって生成されています。

<input type="text" class="form-control"
            name="{{ field.label }}"
            id="{{ field.name }}"
            value="{{ field.name }}" >

2 つ目は、変数inputによって生成されています。{{ field }}

 <div class="form-control">
        <input type="text" class="form-control"
            name="{{ field.label }}"
            id="{{ field.name }}"
            value="{{ field.name }}" >
         {{ field }} <-- this one
        <p class="help-text">{{ field.help_text }} </p>
       </div>

「2 番目の入力を入力すると、フォームは機能しますが、この 2 番目の入力にはスタイリングがありません...」

{{ field }}入力がレンダリングされるときに css クラスが ないため、スタイリングが機能しません。

さらに、各フィールド オブジェクトの属性の一部を切り替えました (詳細については、以下の「変更点」セクションを参照してください)。

このコードを試してください:

<form class="form-contact" action="" method="POST">
{% csrf_token %} 
{% for field in form %}
<fieldset class="form-group">
  <label class="control-label" for="id_{{ field.name }}">{{ field.label }}</label>
    <div class="form-control">
      <input type="text" class="form-control"
        name="{{ field.name }}"
        id="id_{{ field.name }}"
        value="{{ field.value }}" > 
        <p class="help-text">{{ field.help_text }} </p>
       </div>
</fieldset>
{% endfor %}
   <input type="submit" value="Submit"  class="btn btn-primary">
</form>

これがどのように機能するかについて詳しくは、ドキュメントの「フォームのフィールドのループ」セクションをご覧ください。"Django Bootstrap Form" にも興味があるかもしれません。これは、フォームのスタイリングをすばやく簡単に行えるサードパーティ パッケージです。

変更点: 1.ループ内
の変数を削除 2.属性 内で置換 3.属性内で置換{{ field }}
{{ field.label }}{{ field.name }}name
{{ field.name }}{{ field.value }}value

于 2013-09-16T04:19:43.813 に答える