{"title":"フォーム API","version":"5.2","locale":"ja","docname":"ref/forms/api","url":"/ja/5.2/ref/forms/api/","canonical":"https://djangodocs.dev/ja/5.2/ref/forms/api/","summary":"Form のインスタンスには、データセットにバインドされている (bound な) ものとバインドされていない (unbound な) ものがあります。","html":"<span id=\"the-forms-api\"></span><h1>フォーム API<a class=\"heading-anchor\" href=\"#module-django.forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<aside class=\"admonition-about-this-document admonition\" role=\"note\">\n<p class=\"admonition-title\">このドキュメントについて</p>\n<p>このドキュメントでは、Django のフォーム API の詳細について説明します。このドキュメントを読む前に <a class=\"reference internal\" href=\"/ja/5.2/topics/forms/\"><span class=\"doc\">フォームについての概要</span></a> を読むことをおすすめします。</p>\n</aside>\n<section id=\"bound-and-unbound-forms\">\n<span id=\"ref-forms-api-bound-unbound\"></span><h2>バインドされた (bound) フォームとバインドされていない (unbound) フォーム<a class=\"heading-anchor\" href=\"#bound-and-unbound-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> のインスタンスには、データセットに <strong>バインドされている (bound な)</strong> ものと <strong>バインドされていない (unbound な)</strong> ものがあります。</p>\n<ul class=\"simple\">\n<li><p>データセットに <strong>バインドされた</strong> <code class=\"docutils literal notranslate\">Form</code> インスタンスであれば、そのデータをバリデーションしたり、HTMLとしてフォームをレンダリングし、HTMLにデータを表示したりすることができます。</p></li>\n<li><p>データセットに <strong>バインドされていない</strong> <code class=\"docutils literal notranslate\">Form</code> インスタンスでは、（検証するデータがないので）データをバリデーションすることはできませんが、空のフォームをHTMLとしてレンダリングできます。</p></li>\n</ul>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Form</span><a class=\"heading-anchor\" href=\"#django.forms.Form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>バインドされていない <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> のインスタンスを作成するには、クラスの初期化を行います。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n</code></pre></div>\n<p>フォームにデータをバインドするには、辞書型のデータを <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> クラスのコンストラクタの最初のパラメータとして渡します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n</code></pre></div>\n<p>この辞書では、キーは <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> クラスの属性に対応するフィールド名を、値には検証したいデータを指定します。これらは通常文字列ですが、必ずしも文字列型でなくてもかまいません。後ほど解説しますが、渡すデータの型は、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> に依存します。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.is_bound\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">is_bound</span><a class=\"heading-anchor\" href=\"#django.forms.Form.is_bound\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>実行時にバインドされたフォームインスタンスと、されていないフォームインスタンスを区別する必要があるときは、フォームの <a class=\"reference internal\" href=\"#django.forms.Form.is_bound\" title=\"django.forms.Form.is_bound\"><code class=\"xref py py-attr docutils literal notranslate\">is_bound</code></a> 属性の値を確認してください。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_bound\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">({</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_bound\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>空の辞書を渡すと、データが空の <em>バインドされた</em> フォームが作成されることに注意してください。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">({})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_bound\n<span class=\"go\">True</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンス内のデータを変更する方法はありません。 一度作成された <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスのデータは、その有無に関わらず変更不可能であると考えてください。もし <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスにバインドされたデータを変更したい場合や、バインドされていない <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスをデータにバインドしたい場合は、別の <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスを作成してください。</p>\n</section>\n<section id=\"using-forms-to-validate-data\">\n<h2>フォームをデータの検証に使用する<a class=\"heading-anchor\" href=\"#using-forms-to-validate-data\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.clean\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">clean</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.clean\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>相互に関連のあるフィールドに対して独自のバリデーションを追加する必要がある場合、<code class=\"docutils literal notranslate\">Form</code> 上で <code class=\"docutils literal notranslate\">clean()</code> を実装してください。具体的な使用方法は <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/validation/#validating-fields-with-clean\"><span class=\"std std-ref\">互いに依存するフィールドをクリーニングして検証する</span></a> を参照してください。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.is_valid\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">is_valid</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.is_valid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> オブジェクトの主なタスクは、データの検証です。バインドされた <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスでは、 <a class=\"reference internal\" href=\"#django.forms.Form.is_valid\" title=\"django.forms.Form.is_valid\"><code class=\"xref py py-meth docutils literal notranslate\">is_valid()</code></a> メソッドを呼び出して検証を実行し、データが有効であるかどうかを示すブール値を返します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>まずは無効なデータで試してみましょう。以下のケースでは、 <code class=\"docutils literal notranslate\">subject</code> は空白で（デフォルトではすべてのフィールドが必須なのでエラーになります）、 <code class=\"docutils literal notranslate\">sender</code> が有効なメールアドレスではありません。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;invalid email address&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.errors\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">errors</span><a class=\"heading-anchor\" href=\"#django.forms.Form.errors\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.forms.Form.errors\" title=\"django.forms.Form.errors\"><code class=\"xref py py-attr docutils literal notranslate\">errors</code></a> 属性にアクセスして、エラーメッセージの辞書を取得します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>errors\n<span class=\"go\">{&#39;sender&#39;: [&#39;Enter a valid email address.&#39;], &#39;subject&#39;: [&#39;This field is required.&#39;]}</span>\n</code></pre></div>\n<p>この辞書では、キーはフィールド名であり、値はエラーメッセージを表す文字列のリストです。エラーメッセージがリストに格納されているのは、1つのフィールドに複数のエラーメッセージが出力される場合があるからです。</p>\n<p><a class=\"reference internal\" href=\"#django.forms.Form.is_valid\" title=\"django.forms.Form.is_valid\"><code class=\"xref py py-meth docutils literal notranslate\">is_valid()</code></a> を呼び出す前にも、 <a class=\"reference internal\" href=\"#django.forms.Form.errors\" title=\"django.forms.Form.errors\"><code class=\"xref py py-attr docutils literal notranslate\">errors</code></a> にアクセスできます。フォームのデータは、最初に <a class=\"reference internal\" href=\"#django.forms.Form.is_valid\" title=\"django.forms.Form.is_valid\"><code class=\"xref py py-meth docutils literal notranslate\">is_valid()</code></a> を呼び出すか、 <a class=\"reference internal\" href=\"#django.forms.Form.errors\" title=\"django.forms.Form.errors\"><code class=\"xref py py-attr docutils literal notranslate\">errors</code></a> にアクセスした時点で検証されます。</p>\n<p>バリデーションのルーチンは、<a class=\"reference internal\" href=\"#django.forms.Form.errors\" title=\"django.forms.Form.errors\"><code class=\"xref py py-attr docutils literal notranslate\">errors</code></a> や call <a class=\"reference internal\" href=\"#django.forms.Form.is_valid\" title=\"django.forms.Form.is_valid\"><code class=\"xref py py-meth docutils literal notranslate\">is_valid()</code></a> を何度呼び出したとしても、最初の一度だけ呼び出されます。これは、バリデーションが副作用を持っている場合、その副作用は一度しか発生しないということを意味します。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.errors.as_data\">\n<span class=\"sig-prename descclassname\">Form.errors.</span><span class=\"sig-name descname\">as_data</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.errors.as_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フィールドとオリジナルの <code class=\"docutils literal notranslate\">ValidationError</code> インスタンスをマッピングする <code class=\"docutils literal notranslate\">dict</code> を返します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>errors<span class=\"o\">.</span>as_data<span class=\"p\">()</span>\n<span class=\"go\">{&#39;sender&#39;: [ValidationError([&#39;Enter a valid email address.&#39;])],</span>\n<span class=\"go\">&#39;subject&#39;: [ValidationError([&#39;This field is required.&#39;])]}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">code</code> によりエラーを特定する必要があるときはこのメソッドを使用してください。これによって、エラーメッセージの上書きや、エラーが存在するときのビューでの独自のロジックが作成できるようになります。独自のフォーマット (たとえば XML) でシリアライズするためにも使えます。たとえば、<a class=\"reference internal\" href=\"#django.forms.Form.errors.as_json\" title=\"django.forms.Form.errors.as_json\"><code class=\"xref py py-meth docutils literal notranslate\">as_json()</code></a> は <code class=\"docutils literal notranslate\">as_data()</code> を利用しています。</p>\n<p><code class=\"docutils literal notranslate\">as_data()</code> の必要性は、後方互換性に起因します。以前は <code class=\"docutils literal notranslate\">ValidationError</code> インスタンスは <strong>レンダリングされた</strong> エラーメッセージが <code class=\"docutils literal notranslate\">Form.errors</code> ディクショナリに追加されると同時に消失していました。できれば <code class=\"docutils literal notranslate\">Form.errors</code> が <code class=\"docutils literal notranslate\">ValidationError</code> インスタンスを保持し、<code class=\"docutils literal notranslate\">as_</code> プレフィクスを伴うメソッドがエラーをレンダリングできるのが理想でしたが、<code class=\"docutils literal notranslate\">Form.errors</code> 内のレンダリングされたエラーメッセージを受け取る可能性があるコードを壊さないために、逆の実装にしなくてはなりませんでした。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.errors.as_json\">\n<span class=\"sig-prename descclassname\">Form.errors.</span><span class=\"sig-name descname\">as_json</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">escape_html<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.errors.as_json\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>エラーをJSONとしてシリアライズしたものを返します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>errors<span class=\"o\">.</span>as_json<span class=\"p\">()</span>\n<span class=\"go\">{&quot;sender&quot;: [{&quot;message&quot;: &quot;Enter a valid email address.&quot;, &quot;code&quot;: &quot;invalid&quot;}],</span>\n<span class=\"go\">&quot;subject&quot;: [{&quot;message&quot;: &quot;This field is required.&quot;, &quot;code&quot;: &quot;required&quot;}]}</span>\n</code></pre></div>\n<p>デフォルトでは、<code class=\"docutils literal notranslate\">as_json()</code> は出力をエスケープしません。フォームビューへのAJAXリクエストなど、クライアントがレスポンスを解釈しエラーをページに挿入する場合には、クロスサイトスクリプティング攻撃の可能性を避けるために、クライアント側で結果をエスケープする必要があります。これはJavaScriptで、 <code class=\"docutils literal notranslate\">element.textContent = errorText</code> 、またはjQueryの <code class=\"docutils literal notranslate\">$(el).text(errorText)</code> (<code class=\"docutils literal notranslate\">.html()</code> 関数ではなく) を使用することで実行できます。</p>\n<p>何らかの理由でクライアントサイドのエスケープを使いたくない場合は、 <code class=\"docutils literal notranslate\">escape_html=True</code> を設定すればエラーメッセージがエスケープされ、HTMLで直接使用できるようになります。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.errors.get_json_data\">\n<span class=\"sig-prename descclassname\">Form.errors.</span><span class=\"sig-name descname\">get_json_data</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">escape_html<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.errors.get_json_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>JSON にシリアライズできる形式のエラーを辞書として返します。 <a class=\"reference internal\" href=\"#django.forms.Form.errors.as_json\" title=\"django.forms.Form.errors.as_json\"><code class=\"xref py py-meth docutils literal notranslate\">Form.errors.as_json()</code></a> はシリアライズされた JSON を返しますが、これはシリアライズされる前のエラーデータを返します。</p>\n<p><code class=\"docutils literal notranslate\">escape_html</code> パラメータは、 <a class=\"reference internal\" href=\"#django.forms.Form.errors.as_json\" title=\"django.forms.Form.errors.as_json\"><code class=\"xref py py-meth docutils literal notranslate\">Form.errors.as_json()</code></a> で説明されているように動作します。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.add_error\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">add_error</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field</em>, <em class=\"sig-param\">error</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.add_error\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このメソッドは、<code class=\"docutils literal notranslate\">Form.clean()</code> メソッド内またはフォーム全体の外部から特定のフィールドにエラーを追加することを可能にします。たとえば、ビューから追加することもできます。</p>\n<p><code class=\"docutils literal notranslate\">field</code> 引数にはエラーを追加したいフィールド名を指定します。この値が <code class=\"docutils literal notranslate\">None</code> の場合、 <a class=\"reference internal\" href=\"#django.forms.Form.non_field_errors\" title=\"django.forms.Form.non_field_errors\"><code class=\"xref py py-meth docutils literal notranslate\">Form.non_field_errors()</code></a> によって返されるようなフィールドによらないエラーとして扱われます。</p>\n<p>フォームエラーを定義するときのベストプラクティスとして、 <code class=\"docutils literal notranslate\">error</code> 引数は文字列もしくは、できれば <code class=\"docutils literal notranslate\">ValidationError</code> のインスタンスを指定します。フォームエラーの定義時のベストプラクティスについては、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/validation/#raising-validation-error\"><span class=\"std std-ref\">ValidationError を発生させる</span></a> を参照してください。</p>\n<p><code class=\"docutils literal notranslate\">Form.add_error()</code> は <code class=\"docutils literal notranslate\">cleaned_data</code> からフィールドを自動的に削除してしまうことに注意してください。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.has_error\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">has_error</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field</em>, <em class=\"sig-param\">code<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.has_error\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このメソッドは指定したフィールドが特定の <code class=\"docutils literal notranslate\">code</code> のエラーを持つか否かを真偽値で返します。<code class=\"docutils literal notranslate\">code</code> が <code class=\"docutils literal notranslate\">None</code> の場合、そのフィールドにエラーが一つもない場合に <code class=\"docutils literal notranslate\">True</code> を返します。</p>\n<p>フィールドによらないエラー (non-field errors) の有無を確認したい場合は、<code class=\"docutils literal notranslate\">field</code> 引数に <a class=\"reference internal\" href=\"/ja/5.2/ref/exceptions/#django.core.exceptions.NON_FIELD_ERRORS\" title=\"django.core.exceptions.NON_FIELD_ERRORS\"><code class=\"xref py py-data docutils literal notranslate\">NON_FIELD_ERRORS</code></a> を渡します。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.non_field_errors\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">non_field_errors</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.non_field_errors\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このメソッドは、特定のフィールドに関連付けられていない <a class=\"reference internal\" href=\"#django.forms.Form.errors\" title=\"django.forms.Form.errors\"><code class=\"xref py py-attr docutils literal notranslate\">Form.errors</code></a> からのエラーリストを返します。これには、<a class=\"reference internal\" href=\"#django.forms.Form.clean\" title=\"django.forms.Form.clean\"><code class=\"xref py py-meth docutils literal notranslate\">Form.clean()</code></a> で発生した <code class=\"docutils literal notranslate\">ValidationError</code> や、<a class=\"reference internal\" href=\"#django.forms.Form.add_error\" title=\"django.forms.Form.add_error\"><code class=\"xref py py-meth docutils literal notranslate\">Form.add_error(None, &quot;...&quot;)</code></a> を使用して追加されたエラーが含まれます。</p>\n<section id=\"behavior-of-unbound-forms\">\n<h3>バインドされていないフォームの動作<a class=\"heading-anchor\" href=\"#behavior-of-unbound-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>フォームにデータがない場合、フォームの検証は意味をなしません。一応記載しておくと、バインドされていないフォームでは次のような結果になります。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>errors\n<span class=\"go\">{}</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"initial-form-values\">\n<span id=\"ref-forms-initial-form-values\"></span><h2>フォームの初期値<a class=\"heading-anchor\" href=\"#initial-form-values\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.initial\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">initial</span><a class=\"heading-anchor\" href=\"#django.forms.Form.initial\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">initial</code></a> を使うことで、実行時にフォームの初期値を設定できます。たとえば、 <code class=\"docutils literal notranslate\">username</code> フォームを埋めるのに、現在のセッションの username を使うことができます。</p>\n<p>これを実現するには、 <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> の初期化時に <a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">initial</code></a> 引数を使用します。この引数には、フィールド名と初期値のマッピングした辞書を指定します。初期値を指定するフィールドだけを含めればよく、フォーム内のすべてのフィールドを含める必要はありません。以下に例を示します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there!&quot;</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>これらの値はバインドされていないフォームに表示されるだけです。値が入力されなかった場合の、フォールバックされる値として使われることはありません。</p>\n<p><a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> において <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.initial\" title=\"django.forms.Field.initial\"><code class=\"xref py py-class docutils literal notranslate\">initial</code></a> を定義 <em>した上で</em> <code class=\"docutils literal notranslate\">Form</code> をインスタンス化するときに <a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">initial</code></a> を指定した場合、後者の <code class=\"docutils literal notranslate\">initial</code> が優先されます。以下の例では、フィールドレベルとフォームインスタンスレベルの両方で <code class=\"docutils literal notranslate\">initial</code> が提供され、後者が優先されます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">CommentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"s2\">&quot;class&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    url <span class=\"o\">=</span> forms<span class=\"o\">.</span>URLField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    comment <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> CommentForm<span class=\"p\">(</span>initial<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;instance&quot;</span><span class=\"p\">},</span> auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;Name:&lt;input type=&quot;text&quot; name=&quot;name&quot; value=&quot;instance&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Url:&lt;input type=&quot;url&quot; name=&quot;url&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Comment:&lt;input type=&quot;text&quot; name=&quot;comment&quot; required&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.get_initial_for_field\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">get_initial_for_field</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field</em>, <em class=\"sig-param\">field_name</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.get_initial_for_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フォームフィールドの初期データを返します。データは、存在する場合は <a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">Form.initial</code></a> から取得し、それ以外の場合は <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.initial\" title=\"django.forms.Field.initial\"><code class=\"xref py py-attr docutils literal notranslate\">Field.initial</code></a> を参照します。呼び出し可能な値は評価されます。</p>\n<p><code class=\"docutils literal notranslate\">BoundField.initial</code> はよりシンプルなインターフェースを持っているため、<a class=\"reference internal\" href=\"#django.forms.Form.get_initial_for_field\" title=\"django.forms.Form.get_initial_for_field\"><code class=\"xref py py-meth docutils literal notranslate\">get_initial_for_field()</code></a> よりも <a class=\"reference internal\" href=\"#django.forms.BoundField.initial\" title=\"django.forms.BoundField.initial\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.initial</code></a> の使用が推奨されます。また、<a class=\"reference internal\" href=\"#django.forms.Form.get_initial_for_field\" title=\"django.forms.Form.get_initial_for_field\"><code class=\"xref py py-meth docutils literal notranslate\">get_initial_for_field()</code></a> とは異なり、<a class=\"reference internal\" href=\"#django.forms.BoundField.initial\" title=\"django.forms.BoundField.initial\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.initial</code></a> はその値をキャッシュします。これは、戻り値が変わる可能性がある呼び出し可能オブジェクト (例: <code class=\"docutils literal notranslate\">datetime.now</code> や <code class=\"docutils literal notranslate\">uuid.uuid4</code>) を扱う場合に特に便利です。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">uuid</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">UUIDCommentForm</span><span class=\"p\">(</span>CommentForm<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    identifier <span class=\"o\">=</span> forms<span class=\"o\">.</span>UUIDField<span class=\"p\">(</span>initial<span class=\"o\">=</span>uuid<span class=\"o\">.</span>uuid4<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> UUIDCommentForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>get_initial_for_field<span class=\"p\">(</span>f<span class=\"o\">.</span>fields<span class=\"p\">[</span><span class=\"s2\">&quot;identifier&quot;</span><span class=\"p\">],</span> <span class=\"s2\">&quot;identifier&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">UUID(&#39;972ca9e4-7bfe-4f5b-af7d-07b3aa306334&#39;)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>get_initial_for_field<span class=\"p\">(</span>f<span class=\"o\">.</span>fields<span class=\"p\">[</span><span class=\"s2\">&quot;identifier&quot;</span><span class=\"p\">],</span> <span class=\"s2\">&quot;identifier&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">UUID(&#39;1b411fab-844e-4dec-bd4f-e9b0495f04d0&#39;)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Using BoundField.initial, for comparison</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;identifier&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>initial\n<span class=\"go\">UUID(&#39;28a09c59-5f00-4ed9-9179-a3b074fa9c30&#39;)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;identifier&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>initial\n<span class=\"go\">UUID(&#39;28a09c59-5f00-4ed9-9179-a3b074fa9c30&#39;)</span>\n</code></pre></div>\n</section>\n<section id=\"checking-which-form-data-has-changed\">\n<h2>どのフォームデータが変更されたかをチェックする<a class=\"heading-anchor\" href=\"#checking-which-form-data-has-changed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.has_changed\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">has_changed</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.has_changed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フォームデータが初期値から変更されたかどうかをチェックしたい場合は、 <code class=\"docutils literal notranslate\">has_changed()</code> メソッドを使います。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">,</span> initial<span class=\"o\">=</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>has_changed<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n</code></pre></div>\n<p>フォームが送信された場合、比較ができるようにフォームを再構築して元のデータを提供します:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>request<span class=\"o\">.</span>POST<span class=\"p\">,</span> initial<span class=\"o\">=</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>has_changed<span class=\"p\">()</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">has_changed()</code> は、 <code class=\"docutils literal notranslate\">request.POST</code> が <a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">initial</code></a> で提供されたデータと異なる場合、 <code class=\"docutils literal notranslate\">True</code> を返し、同じであれば <code class=\"docutils literal notranslate\">False</code> を返します。この結果は、それぞれのフィールドで <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.has_changed\" title=\"django.forms.Field.has_changed\"><code class=\"xref py py-meth docutils literal notranslate\">Field.has_changed()</code></a> を呼ぶことで計算されます。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.changed_data\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">changed_data</span><a class=\"heading-anchor\" href=\"#django.forms.Form.changed_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">changed_data</code> 属性は、フォームにバインドされたデータ (ふつうは <code class=\"docutils literal notranslate\">request.POST</code>) の値が <a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">initial</code></a> で提供されたものと異なるとき、そのフィールド名のリストを返します。データが変更されていない場合は、空のリストを返します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>request<span class=\"o\">.</span>POST<span class=\"p\">,</span> initial<span class=\"o\">=</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">if</span> f<span class=\"o\">.</span>has_changed<span class=\"p\">():</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;The following fields changed: </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"s2\">&quot;, &quot;</span><span class=\"o\">.</span>join<span class=\"p\">(</span>f<span class=\"o\">.</span>changed_data<span class=\"p\">))</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>changed_data\n<span class=\"go\">[&#39;subject&#39;, &#39;message&#39;]</span>\n</code></pre></div>\n</section>\n<section id=\"accessing-the-fields-from-the-form\">\n<h2>フォームからフィールドにアクセスする<a class=\"heading-anchor\" href=\"#accessing-the-fields-from-the-form\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.fields\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">fields</span><a class=\"heading-anchor\" href=\"#django.forms.Form.fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスのフィールドには、その <code class=\"docutils literal notranslate\">fields</code> 属性からアクセスできます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> row <span class=\"ow\">in</span> f<span class=\"o\">.</span>fields<span class=\"o\">.</span>values<span class=\"p\">():</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>row<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;django.forms.fields.CharField object at 0x7ffaac632510&gt;</span>\n<span class=\"go\">&lt;django.forms.fields.URLField object at 0x7ffaac632f90&gt;</span>\n<span class=\"go\">&lt;django.forms.fields.CharField object at 0x7ffaac3aa050&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>fields<span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n<span class=\"go\">&lt;django.forms.fields.CharField object at 0x7ffaac6324d0&gt;</span>\n</code></pre></div>\n<p>フィールドと <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> 、 <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスを変更することで、フォーム内でのフィールドの表示方法を変更できます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>as_div<span class=\"p\">()</span><span class=\"o\">.</span>split<span class=\"p\">(</span><span class=\"s2\">&quot;&lt;/div&gt;&quot;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">&#39;&lt;div&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_subject&quot;&gt;&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>label <span class=\"o\">=</span> <span class=\"s2\">&quot;Topic&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>as_div<span class=\"p\">()</span><span class=\"o\">.</span>split<span class=\"p\">(</span><span class=\"s2\">&quot;&lt;/div&gt;&quot;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">&#39;&lt;div&gt;&lt;label for=&quot;id_subject&quot;&gt;Topic:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_subject&quot;&gt;&#39;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">base_fields</code> 属性を変更しないように注意してください。この変更は、同じPythonプロセス内のすべての後続の <code class=\"docutils literal notranslate\">ContactForm</code> インスタンスに影響を与えます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>base_fields<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>label_suffix <span class=\"o\">=</span> <span class=\"s2\">&quot;?&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>another_f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>another_f<span class=\"o\">.</span>as_div<span class=\"p\">()</span><span class=\"o\">.</span>split<span class=\"p\">(</span><span class=\"s2\">&quot;&lt;/div&gt;&quot;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"go\">&#39;&lt;div&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject?&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_subject&quot;&gt;&#39;</span>\n</code></pre></div>\n</section>\n<section id=\"accessing-clean-data\">\n<h2>&quot;clean&quot; なデータにアクセスする<a class=\"heading-anchor\" href=\"#accessing-clean-data\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.cleaned_data\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">cleaned_data</span><a class=\"heading-anchor\" href=\"#django.forms.Form.cleaned_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> クラスの各フィールドは、データの検証だけでなく、それを「クリーニング」する – すなわち、データを一貫した形式に正規化する役割も担っています。これは素晴らしい機能で、各フィールドにおいて、様々な形式で入力されるデータから、常に整合性のある出力を得ることができます。</p>\n<p>たとえば、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.DateField\" title=\"django.forms.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> はインプットを Python の <code class=\"docutils literal notranslate\">datetime.date</code> オブジェクトに正規化します。たとえ <code class=\"docutils literal notranslate\">'1994-07-15'</code> という形式の文字列で渡そうが、 <code class=\"docutils literal notranslate\">datetime.date</code> オブジェクトを渡そうが、他の様々な形式で渡そうが、それが検証にパスする限り <code class=\"docutils literal notranslate\">DateField</code> はいつも <code class=\"docutils literal notranslate\">datetime.date</code> オブジェクトに正規化します。</p>\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスを作成し、データをセットして検証した後は、<code class=\"docutils literal notranslate\">cleaned_data</code> 属性を介してクリーンなデータにアクセスできます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>cleaned_data\n<span class=\"go\">{&#39;cc_myself&#39;: True, &#39;message&#39;: &#39;Hi there&#39;, &#39;sender&#39;: &#39;foo@example.com&#39;, &#39;subject&#39;: &#39;hello&#39;}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">CharField</code> や <code class=\"docutils literal notranslate\">EmailField</code> といったテキストベースのフィールドは、入力を文字列に正規化します。暗黙的な文字エンコードの動作については、後のドキュメントでカバーします。</p>\n<p>もしデータが検証に合格 <em>しなかった</em> 場合、 <code class=\"docutils literal notranslate\">cleaned_data</code> の辞書には有効なフィールドのみが含まれます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;invalid email address&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">False</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>cleaned_data\n<span class=\"go\">{&#39;cc_myself&#39;: True, &#39;message&#39;: &#39;Hi there&#39;}</span>\n</code></pre></div>\n<p>たとえ <code class=\"docutils literal notranslate\">Form</code> を定義する際に追加のデータを渡しても、 <code class=\"docutils literal notranslate\">cleaned_data</code> には <code class=\"docutils literal notranslate\">Form</code> で定義されたフィールドのキー <em>のみ</em> が含まれます。この例では <code class=\"docutils literal notranslate\">ContactForm</code> のコンストラクタに追加のフィールドを渡していますが、 <code class=\"docutils literal notranslate\">cleaned_data</code> にはフォームのフィールドのみが含まれます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;extra_field_1&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;extra_field_2&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;extra_field_3&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;baz&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>cleaned_data  <span class=\"c1\"># Doesn&#39;t contain extra_field_1, etc.</span>\n<span class=\"go\">{&#39;cc_myself&#39;: True, &#39;message&#39;: &#39;Hi there&#39;, &#39;sender&#39;: &#39;foo@example.com&#39;, &#39;subject&#39;: &#39;hello&#39;}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">Form</code> の検証に合格した場合、 任意入力のフィールドのデータが一部含まれていなかったとしても、 <em>すべての</em> フィールドのキーと値が含まれています。この例では、渡したデータに <code class=\"docutils literal notranslate\">nick_name</code> フィールドの値は含まれていませんが、 <code class=\"docutils literal notranslate\">cleaned_data</code> には空の値が含まれています。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">OptionalPersonForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    first_name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    last_name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    nick_name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>required<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> OptionalPersonForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_valid<span class=\"p\">()</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>cleaned_data\n<span class=\"go\">{&#39;nick_name&#39;: &#39;&#39;, &#39;first_name&#39;: &#39;John&#39;, &#39;last_name&#39;: &#39;Lennon&#39;}</span>\n</code></pre></div>\n<p>上記の例では、 <code class=\"docutils literal notranslate\">nick_name</code> は <code class=\"docutils literal notranslate\">CharField</code> であるため、その <code class=\"docutils literal notranslate\">cleaned_data</code> の値は空文字列に設定されます。これは <code class=\"docutils literal notranslate\">CharField</code> が空の値を空文字列として扱うためです。フィールドタイプごとに &quot;空&quot; のときの値は決まっています。たとえば、 <code class=\"docutils literal notranslate\">DateField</code> の場合は空文字列ではなく <code class=\"docutils literal notranslate\">None</code> になります。この挙動に関する各フィールドの詳細については、以下の <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#built-in-fields\"><span class=\"std std-ref\">ビルトインの Field クラス</span></a> セクションにある空の値に関する注意書きを参照してください。</p>\n<p>特定のいくつかの (フォーム名に基づく) フォームフィールドまたは (さまざまなフィールドの組み合わせを考えて) フォーム全体に対してのバリデーションを行うコードを書くこともできます。これについての詳細は、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/validation/\"><span class=\"doc\">フォームとフィールドのバリデーション</span></a> を見てください。</p>\n</section>\n<section id=\"outputting-forms-as-html\">\n<span id=\"ref-forms-api-outputting-html\"></span><h2>フォームをHTMLとしてアウトプットする<a class=\"heading-anchor\" href=\"#outputting-forms-as-html\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\">Form</code> オブジェクトの2番目のタスクは、自身をHTMLとしてレンダリングすることです。それを行うには <code class=\"docutils literal notranslate\">print</code> します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_subject&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;message&quot; required id=&quot;id_message&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; required id=&quot;id_sender&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>フォームがデータにバインドされている場合、HTMLの出力にはそのデータが適切に含まれます。たとえば、フィールドが <code class=\"docutils literal notranslate\">&lt;input type=&quot;text&quot;&gt;</code> で表される場合、データは <code class=\"docutils literal notranslate\">value</code> 属性に含まれます。フィールドが <code class=\"docutils literal notranslate\">&lt;input type=&quot;checkbox&quot;&gt;</code> で表される場合、HTMLには必要に応じて <code class=\"docutils literal notranslate\">checked</code> が含まれます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; value=&quot;hello&quot; maxlength=&quot;100&quot; required id=&quot;id_subject&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;message&quot; value=&quot;Hi there&quot; required id=&quot;id_message&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; value=&quot;foo@example.com&quot; required id=&quot;id_sender&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot; checked&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>このデフォルトの出力は、各フィールドを <code class=\"docutils literal notranslate\">&lt;div&gt;</code> で囲みます。以下の点に注意してください。</p>\n<ul class=\"simple\">\n<li><p>柔軟性のために、出力には <code class=\"docutils literal notranslate\">&lt;form&gt;</code> と <code class=\"docutils literal notranslate\">&lt;/form&gt;</code> のタグや <code class=\"docutils literal notranslate\">&lt;input type=&quot;submit&quot;&gt;</code> のタグは含まれていません。これらは各自で追加するようにしてください。</p></li>\n<li><p>それぞれのフィールドタイプはデフォルトの HTML 表現を持っています。 <code class=\"docutils literal notranslate\">CharField</code> は <code class=\"docutils literal notranslate\">&lt;input type=&quot;text&quot;&gt;</code> で、 <code class=\"docutils literal notranslate\">EmailField</code> は <code class=\"docutils literal notranslate\">&lt;input type=&quot;email&quot;&gt;</code> で表現され、<code class=\"docutils literal notranslate\">BooleanField(null=False)</code> は <code class=\"docutils literal notranslate\">&lt;input type=&quot;checkbox&quot;&gt;</code> で表現されます。これらは単なる実用的なデフォルトであり、あるフィールドにどの HTML を使うかは、すぐ後で説明するウィジェットを使って指定できます。</p></li>\n<li><p>HTML のそれぞれのタグの <code class=\"docutils literal notranslate\">name</code> は、 <code class=\"docutils literal notranslate\">ContactForm</code> クラスの属性名から直接とられます。</p></li>\n<li><p>それぞれのフィールドのテキストラベル、たとえば <code class=\"docutils literal notranslate\">'Subject:'</code>, <code class=\"docutils literal notranslate\">'Message:'</code> , <code class=\"docutils literal notranslate\">'Cc myself:'</code> は、フィールド名のアンダースコアをスペースに変換し、頭文字を大文字に変換して生成されます。これらもまた単なる実用的なデフォルトです; 手動でラベルを指定することもできます。</p></li>\n<li><p>それぞれのテキストラベルは HTML <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグで囲まれており、 <code class=\"docutils literal notranslate\">id</code> を通して適切なフォームフィールドを指しています。<code class=\"docutils literal notranslate\">id</code> は、フィールド名に <code class=\"docutils literal notranslate\">'id_'</code> を前置することで生成されます。<code class=\"docutils literal notranslate\">id</code> 属性と <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグは、ベストプラクティスに従ってデフォルトでアウトプットにインクルードされますが、この挙動も変更できます。</p></li>\n<li><p>出力はHTML5の構文を使用し、 <code class=\"docutils literal notranslate\">&lt;!DOCTYPE html&gt;</code> をターゲットにしています。例えば、 <code class=\"docutils literal notranslate\">checked='checked'</code> のXHTMLスタイルではなく <code class=\"docutils literal notranslate\">checked</code> のようなブール属性を使用します。</p></li>\n</ul>\n<p>フォームを <code class=\"docutils literal notranslate\">print</code> するときは <code class=\"docutils literal notranslate\">&lt;div&gt;</code> がデフォルトの出力スタイルですが、独自のフォームテンプレートを使用して、出力をカスタマイズできます。このテンプレートは、サイト全体、フォームごと、またはインスタンスごとに設定できます。詳細は、 <a class=\"reference internal\" href=\"/ja/5.2/topics/forms/#reusable-form-templates\"><span class=\"std std-ref\">再利用可能なフォームテンプレート</span></a> を参照してください。</p>\n<section id=\"default-rendering\">\n<h3>デフォルトのレンダリング<a class=\"heading-anchor\" href=\"#default-rendering\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>フォームを <code class=\"docutils literal notranslate\">print</code> するときのデフォルトのレンダリングでは、次のメソッドと属性が使用されます。</p>\n<section id=\"template-name\">\n<h4><code class=\"docutils literal notranslate\">template_name</code><a class=\"heading-anchor\" href=\"#template-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.template_name\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">template_name</span><a class=\"heading-anchor\" href=\"#django.forms.Form.template_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フォームを文字列に変換するときにレンダリングされるテンプレートの名前です。例えば、 <code class=\"docutils literal notranslate\">print(form)</code> やテンプレート内の <code class=\"docutils literal notranslate\">{{ form }}</code> などで使用されます。</p>\n<p>デフォルトでは、レンダラーの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#django.forms.renderers.BaseRenderer.form_template_name\" title=\"django.forms.renderers.BaseRenderer.form_template_name\"><code class=\"xref py py-attr docutils literal notranslate\">form_template_name</code></a> の値を返すプロパティです。特定のフォームクラスに対してそれを上書きするために、文字列型のテンプレート名として設定できます。</p>\n</section>\n<section id=\"render\">\n<h4><code class=\"docutils literal notranslate\">render()</code><a class=\"heading-anchor\" href=\"#render\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.render\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">render</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">template_name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">context<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">renderer<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.render\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>renderメソッドは、 <code class=\"docutils literal notranslate\">__str__</code> だけでなく、 <a class=\"reference internal\" href=\"#django.forms.Form.as_div\" title=\"django.forms.Form.as_div\"><code class=\"xref py py-meth docutils literal notranslate\">Form.as_div()</code></a> 、 <a class=\"reference internal\" href=\"#django.forms.Form.as_table\" title=\"django.forms.Form.as_table\"><code class=\"xref py py-meth docutils literal notranslate\">Form.as_table()</code></a> 、 <a class=\"reference internal\" href=\"#django.forms.Form.as_p\" title=\"django.forms.Form.as_p\"><code class=\"xref py py-meth docutils literal notranslate\">Form.as_p()</code></a> 、および <a class=\"reference internal\" href=\"#django.forms.Form.as_ul\" title=\"django.forms.Form.as_ul\"><code class=\"xref py py-meth docutils literal notranslate\">Form.as_ul()</code></a> メソッドによって呼び出されます。すべての引数はオプションであり、デフォルトは次のとおりです。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">template_name</code>: <a class=\"reference internal\" href=\"#django.forms.Form.template_name\" title=\"django.forms.Form.template_name\"><code class=\"xref py py-attr docutils literal notranslate\">Form.template_name</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">context</code>: <a class=\"reference internal\" href=\"#django.forms.Form.get_context\" title=\"django.forms.Form.get_context\"><code class=\"xref py py-meth docutils literal notranslate\">Form.get_context()</code></a> が返す値</p></li>\n<li><p><code class=\"docutils literal notranslate\">renderer</code>: <a class=\"reference internal\" href=\"#django.forms.Form.default_renderer\" title=\"django.forms.Form.default_renderer\"><code class=\"xref py py-attr docutils literal notranslate\">Form.default_renderer</code></a> が返す値</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\">template_name</code> を渡すことで、単一の呼び出しに使用されるテンプレートをカスタマイズできます。</p>\n</section>\n<section id=\"get-context\">\n<h4><code class=\"docutils literal notranslate\">get_context()</code><a class=\"heading-anchor\" href=\"#get-context\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.get_context\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">get_context</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.get_context\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>テンプレートをレンダリングするためのコンテキストを返します。</p>\n<p>利用可能なコンテキストは次のとおりです。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">form</code>: バインドされたフォーム。</p></li>\n<li><p><code class=\"docutils literal notranslate\">fields</code>: 隠されたフィールドを除く、すべてのバインドされたフィールド。</p></li>\n<li><p><code class=\"docutils literal notranslate\">hidden_fields</code>: すべての隠されたバインドフィールド。</p></li>\n<li><p><code class=\"docutils literal notranslate\">errors</code>: フォームの非フィールド関連または非表示フィールド関連の全エラー。</p></li>\n</ul>\n</section>\n<section id=\"template-name-label\">\n<h4><code class=\"docutils literal notranslate\">template_name_label</code><a class=\"heading-anchor\" href=\"#template-name-label\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.template_name_label\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">template_name_label</span><a class=\"heading-anchor\" href=\"#django.forms.Form.template_name_label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>テンプレートは、 <a class=\"reference internal\" href=\"#django.forms.BoundField.label_tag\" title=\"django.forms.BoundField.label_tag\"><code class=\"xref py py-meth docutils literal notranslate\">BoundField.label_tag()</code></a>/<a class=\"reference internal\" href=\"#django.forms.BoundField.legend_tag\" title=\"django.forms.BoundField.legend_tag\"><code class=\"xref py py-meth docutils literal notranslate\">legend_tag()</code></a> を呼び出す際に使用されるフィールドの <code class=\"docutils literal notranslate\">&lt;label&gt;</code> をレンダリングするために使用されます。この属性をオーバーライドするか、デフォルトのテンプレートをオーバーライドすることで、フォームごとに変更できます。詳細については、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#overriding-built-in-form-templates\"><span class=\"std std-ref\">組み込みのフォームテンプレートをオーバーライドする</span></a> も参照してください。</p>\n</section>\n</section>\n<section id=\"output-styles\">\n<h3>出力スタイル<a class=\"heading-anchor\" href=\"#output-styles\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>フォームの出力スタイルを変更する推奨されるアプローチは、サイト全体、フォームごと、またはインスタンスごとにカスタムフォームテンプレートを設定することです。例については、 <a class=\"reference internal\" href=\"/ja/5.2/topics/forms/#reusable-form-templates\"><span class=\"std std-ref\">再利用可能なフォームテンプレート</span></a> を参照してください。</p>\n<p>以下のヘルパー関数は後方互換性のために提供され、特定の <code class=\"docutils literal notranslate\">template_name</code> 値を渡す <a class=\"reference internal\" href=\"#django.forms.Form.render\" title=\"django.forms.Form.render\"><code class=\"xref py py-meth docutils literal notranslate\">Form.render()</code></a> へのプロキシです。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>フレームワークが提供するテンプレートと出力スタイルのうち、デフォルトの <code class=\"docutils literal notranslate\">as_div()</code> は <code class=\"docutils literal notranslate\">as_p()</code>, <code class=\"docutils literal notranslate\">as_table()</code>, <code class=\"docutils literal notranslate\">as_ul()</code> バージョンよりも推奨されます。なぜなら、このテンプレートは <code class=\"docutils literal notranslate\">&lt;fieldset&gt;</code> と <code class=\"docutils literal notranslate\">&lt;legend&gt;</code> を実装しており、関連する入力をグループ化し、スクリーンリーダーユーザがナビゲートしやすいからです。</p>\n</aside>\n<p>各ヘルパーは、適切なテンプレート名を指定する属性とフォームメソッドをペアにします。</p>\n<section id=\"as-div\">\n<h4><code class=\"docutils literal notranslate\">as_div()</code><a class=\"heading-anchor\" href=\"#as-div\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.template_name_div\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">template_name_div</span><a class=\"heading-anchor\" href=\"#django.forms.Form.template_name_div\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_div()</code> に使用されるテンプレート。デフォルト: <code class=\"docutils literal notranslate\">'django/forms/div.html'</code>。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.as_div\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">as_div</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.as_div\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_div()</code> はフォームを一連の <code class=\"docutils literal notranslate\">&lt;div&gt;</code> 要素としてレンダリングし、各 <code class=\"docutils literal notranslate\">&lt;div&gt;</code> には以下のように一つのフィールドを含みます</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>as_div<span class=\"p\">()</span>\n</code></pre></div>\n<p>… これは次のようなHTMLを生成します:</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_subject&quot;</span><span class=\"p\">&gt;</span>Subject:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;subject&quot;</span> <span class=\"na\">maxlength</span><span class=\"o\">=</span><span class=\"s\">&quot;100&quot;</span> <span class=\"na\">required</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_subject&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_message&quot;</span><span class=\"p\">&gt;</span>Message:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;message&quot;</span> <span class=\"na\">required</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_message&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_sender&quot;</span><span class=\"p\">&gt;</span>Sender:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;email&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;sender&quot;</span> <span class=\"na\">required</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_sender&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_cc_myself&quot;</span><span class=\"p\">&gt;</span>Cc myself:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;checkbox&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;cc_myself&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_cc_myself&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"as-p\">\n<h4><code class=\"docutils literal notranslate\">as_p()</code><a class=\"heading-anchor\" href=\"#as-p\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.template_name_p\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">template_name_p</span><a class=\"heading-anchor\" href=\"#django.forms.Form.template_name_p\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_p()</code> に使われるテンプレート。デフォルト: <code class=\"docutils literal notranslate\">'django/forms/p.html'</code> 。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.as_p\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">as_p</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.as_p\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_p()</code> は、フォームを一連の <code class=\"docutils literal notranslate\">&lt;p&gt;</code> タグとしてレンダリングし、各 <code class=\"docutils literal notranslate\">&lt;p&gt;</code> は1つのフィールドを含みます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>as_p<span class=\"p\">()</span>\n<span class=\"go\">&#39;&lt;p&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt; &lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/p&gt;\\n&lt;p&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;&lt;/p&gt;\\n&lt;p&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;&lt;/p&gt;\\n&lt;p&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt; &lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/p&gt;&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"o\">.</span>as_p<span class=\"p\">())</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt; &lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt; &lt;input type=&quot;email&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;&lt;/p&gt;</span>\n<span class=\"go\">&lt;p&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt; &lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/p&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"as-ul\">\n<h4><code class=\"docutils literal notranslate\">as_ul()</code><a class=\"heading-anchor\" href=\"#as-ul\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.template_name_ul\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">template_name_ul</span><a class=\"heading-anchor\" href=\"#django.forms.Form.template_name_ul\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_ul()</code> によって使用されるテンプレート。デフォルト: <code class=\"docutils literal notranslate\">'django/forms/ul.html'</code> 。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.as_ul\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">as_ul</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.as_ul\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_ul()</code> は、フォームを一連の <code class=\"docutils literal notranslate\">&lt;li&gt;</code> タグとしてレンダリングし、各 <code class=\"docutils literal notranslate\">&lt;li&gt;</code> には一つのフィールドが含まれます。柔軟性のために、<code class=\"docutils literal notranslate\">&lt;ul&gt;</code> に任意のHTML属性を指定できるように、 <code class=\"docutils literal notranslate\">&lt;ul&gt;</code> や <code class=\"docutils literal notranslate\">&lt;/ul&gt;</code> は含まれ <em>ません</em> 。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>as_ul<span class=\"p\">()</span>\n<span class=\"go\">&#39;&lt;li&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt; &lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/li&gt;\\n&lt;li&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;&lt;/li&gt;\\n&lt;li&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt; &lt;input type=&quot;email&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;&lt;/li&gt;\\n&lt;li&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt; &lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/li&gt;&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"o\">.</span>as_ul<span class=\"p\">())</span>\n<span class=\"go\">&lt;li&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt; &lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/li&gt;</span>\n<span class=\"go\">&lt;li&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;&lt;/li&gt;</span>\n<span class=\"go\">&lt;li&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt; &lt;input type=&quot;email&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;&lt;/li&gt;</span>\n<span class=\"go\">&lt;li&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt; &lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/li&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"as-table\">\n<h4><code class=\"docutils literal notranslate\">as_table()</code><a class=\"heading-anchor\" href=\"#as-table\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.template_name_table\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">template_name_table</span><a class=\"heading-anchor\" href=\"#django.forms.Form.template_name_table\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_table()</code> によって使用されるテンプレート。デフォルト: <code class=\"docutils literal notranslate\">'django/forms/table.html'</code> 。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.as_table\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">as_table</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.as_table\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">as_table()</code> はフォームを HTML の <code class=\"docutils literal notranslate\">&lt;table&gt;</code> としてレンダリングします:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>as_table<span class=\"p\">()</span>\n<span class=\"go\">&#39;&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;\\n&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;\\n&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;\\n&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"o\">.</span>as_table<span class=\"p\">())</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_sender&quot;&gt;Sender:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n<span class=\"go\">&lt;tr&gt;&lt;th&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt;&lt;/th&gt;&lt;td&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;&lt;/td&gt;&lt;/tr&gt;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"styling-required-or-erroneous-form-rows\">\n<span id=\"ref-forms-api-styling-form-rows\"></span><h3>必須フォームとエラーのあるフォームのスタイリング<a class=\"heading-anchor\" href=\"#styling-required-or-erroneous-form-rows\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.error_css_class\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">error_css_class</span><a class=\"heading-anchor\" href=\"#django.forms.Form.error_css_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.required_css_class\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">required_css_class</span><a class=\"heading-anchor\" href=\"#django.forms.Form.required_css_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>必須フォームやエラーのあるフォームの行を装飾するのはとても一般的です。たとえば、必須フォームの行は太字にしたり、エラーであれば赤色にしたくなることもあるでしょう。</p>\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> クラスには、必須フォームやエラーのあるフォームに <code class=\"docutils literal notranslate\">class</code> 属性を追加するためのいくつかのフックを用意しています。具体的には、 <a class=\"reference internal\" href=\"#django.forms.Form.error_css_class\" title=\"django.forms.Form.error_css_class\"><code class=\"xref py py-attr docutils literal notranslate\">Form.error_css_class</code></a> 属性や <a class=\"reference internal\" href=\"#django.forms.Form.required_css_class\" title=\"django.forms.Form.required_css_class\"><code class=\"xref py py-attr docutils literal notranslate\">Form.required_css_class</code></a> 属性をセットします:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n\n\n<span class=\"k\">class</span> <span class=\"nc\">ContactForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    error_css_class <span class=\"o\">=</span> <span class=\"s2\">&quot;error&quot;</span>\n    required_css_class <span class=\"o\">=</span> <span class=\"s2\">&quot;required&quot;</span>\n\n    <span class=\"c1\"># ... and the rest of your fields here</span>\n</code></pre></div>\n<p>それを行ったら、必要に応じて行には <code class=\"docutils literal notranslate\">&quot;error&quot;</code> および/または <code class=\"docutils literal notranslate\">&quot;required&quot;</code> のクラスが与えられます。HTMLは以下のようになるでしょう:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div class=&quot;required&quot;&gt;&lt;label for=&quot;id_subject&quot; class=&quot;required&quot;&gt;Subject:&lt;/label&gt; ...</span>\n<span class=\"go\">&lt;div class=&quot;required&quot;&gt;&lt;label for=&quot;id_message&quot; class=&quot;required&quot;&gt;Message:&lt;/label&gt; ...</span>\n<span class=\"go\">&lt;div class=&quot;required&quot;&gt;&lt;label for=&quot;id_sender&quot; class=&quot;required&quot;&gt;Sender:&lt;/label&gt; ...</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_cc_myself&quot;&gt;Cc myself:&lt;/label&gt; ...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>label_tag<span class=\"p\">()</span>\n<span class=\"go\">&lt;label class=&quot;required&quot; for=&quot;id_subject&quot;&gt;Subject:&lt;/label&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>legend_tag<span class=\"p\">()</span>\n<span class=\"go\">&lt;legend class=&quot;required&quot; for=&quot;id_subject&quot;&gt;Subject:&lt;/legend&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>label_tag<span class=\"p\">(</span>attrs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;class&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">})</span>\n<span class=\"go\">&lt;label for=&quot;id_subject&quot; class=&quot;foo required&quot;&gt;Subject:&lt;/label&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>legend_tag<span class=\"p\">(</span>attrs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;class&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">})</span>\n<span class=\"go\">&lt;legend for=&quot;id_subject&quot; class=&quot;foo required&quot;&gt;Subject:&lt;/legend&gt;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#custom-boundfield\"><span class=\"std std-ref\">カスタム BoundField</span></a> を使用すれば、さらにフォーム行のレンダリングをカスタマイズすることができます。</p>\n</section>\n<section id=\"configuring-form-elements-html-id-attributes-and-label-tags\">\n<span id=\"ref-forms-api-configuring-label\"></span><h3>フォーム要素の HTML <code class=\"docutils literal notranslate\">id</code> 属性と <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグを設定する<a class=\"heading-anchor\" href=\"#configuring-form-elements-html-id-attributes-and-label-tags\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.auto_id\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">auto_id</span><a class=\"heading-anchor\" href=\"#django.forms.Form.auto_id\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>デフォルトでは、フォームをレンダリングするメソッドは次のものを含みます:</p>\n<ul class=\"simple\">\n<li><p>フォーム要素に対する HTML <code class=\"docutils literal notranslate\">id</code> 属性。</p></li>\n<li><p>ラベルの前後に、フォームに対応する <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグ。 HTML の <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグは、どのラベルテキストがどのフォーム要素と関係しているかを指定します。この小さな修飾によって、補助的なデバイスでフォームにアクセスするのが便利になります。いつも <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグを使うようにするとよいでしょう。</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\">id</code> 属性の値は、フォームフィールド名に <code class=\"docutils literal notranslate\">id_</code> を前置して生成されます。しかし、もし <code class=\"docutils literal notranslate\">id</code> 規約を変更したかったり、 HTML <code class=\"docutils literal notranslate\">id</code> 属性と <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグを完全に消し去りたいような場合は、この挙動は変更可能です。</p>\n<p><code class=\"docutils literal notranslate\">id</code> とラベルの挙動を制御するには、 <code class=\"docutils literal notranslate\">auto_id</code> 引数を使います。この引数は、 <code class=\"docutils literal notranslate\">True</code> か <code class=\"docutils literal notranslate\">False</code> か文字列でなければなりません。</p>\n<p><code class=\"docutils literal notranslate\">auto_id</code> が <code class=\"docutils literal notranslate\">False</code> の場合、フォームの出力には <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグや <code class=\"docutils literal notranslate\">id</code> 属性が含まれなくなります。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;Subject:&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Message:&lt;textarea name=&quot;message&quot; cols=&quot;40&quot; rows=&quot;10&quot; required&gt;&lt;/textarea&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Sender:&lt;input type=&quot;email&quot; name=&quot;sender&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Cc myself:&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">auto_id</code> が <code class=\"docutils literal notranslate\">True</code> に設定されている場合、フォームの出力には <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグが含まれ、各フォームフィールドの <code class=\"docutils literal notranslate\">id</code> としてフィールド名を使用します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;subject&quot;&gt;Subject:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;subject&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;message&quot;&gt;Message:&lt;/label&gt;&lt;textarea name=&quot;message&quot; cols=&quot;40&quot; rows=&quot;10&quot; required id=&quot;message&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;sender&quot;&gt;Sender:&lt;/label&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; required id=&quot;sender&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;cc_myself&quot;&gt;Cc myself:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;cc_myself&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">auto_id</code> が <code class=\"docutils literal notranslate\">'%s'</code> 形式の文字を含む文字列に設定されている場合、フォームの出力には <code class=\"docutils literal notranslate\">&lt;label&gt;</code> タグが含まれ、フォーマット文字列に基づいて <code class=\"docutils literal notranslate\">id</code> 属性が生成されます。例えば、フォーマット文字列が <code class=\"docutils literal notranslate\">'field_%s'</code> の場合、<code class=\"docutils literal notranslate\">subject</code> という名前のフィールドは <code class=\"docutils literal notranslate\">'field_subject'</code> という <code class=\"docutils literal notranslate\">id</code> 値を取得します。例を続けます:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"s2\">&quot;id_for_</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_subject&quot;&gt;Subject:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_for_subject&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_message&quot;&gt;Message:&lt;/label&gt;&lt;textarea name=&quot;message&quot; cols=&quot;40&quot; rows=&quot;10&quot; required id=&quot;id_for_message&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_sender&quot;&gt;Sender:&lt;/label&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; required id=&quot;id_for_sender&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_cc_myself&quot;&gt;Cc myself:&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_for_cc_myself&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>もし、 <code class=\"docutils literal notranslate\">auto_id</code> が (<code class=\"docutils literal notranslate\">%s</code> を含まない文字列のような) それ以外の真の値にセットされた場合、ライブラリは <code class=\"docutils literal notranslate\">auto_id</code> が <code class=\"docutils literal notranslate\">True</code> の場合と同様に動作します。</p>\n<p>デフォルトでは、 <code class=\"docutils literal notranslate\">auto_id</code> は文字列 <code class=\"docutils literal notranslate\">'id_%s'</code> がセットされています。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.label_suffix\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">label_suffix</span><a class=\"heading-anchor\" href=\"#django.forms.Form.label_suffix\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フォームをレンダリングする際、すべてのラベル名の後ろにつけられる翻訳可能な文字列の接尾語 (英語ではコロン (<code class=\"docutils literal notranslate\">:</code>) がデフォルト) です。</p>\n<p>その文字をカスタマイズしたり、完全に省略したりすることも、<code class=\"docutils literal notranslate\">label_suffix</code> パラメータを使用して可能です。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"s2\">&quot;id_for_</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span> label_suffix<span class=\"o\">=</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_subject&quot;&gt;Subject&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_for_subject&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_message&quot;&gt;Message&lt;/label&gt;&lt;textarea name=&quot;message&quot; cols=&quot;40&quot; rows=&quot;10&quot; required id=&quot;id_for_message&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_sender&quot;&gt;Sender&lt;/label&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; required id=&quot;id_for_sender&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_cc_myself&quot;&gt;Cc myself&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_for_cc_myself&quot;&gt;&lt;/div&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"s2\">&quot;id_for_</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span> label_suffix<span class=\"o\">=</span><span class=\"s2\">&quot; -&gt;&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_subject&quot;&gt;Subject -&amp;gt;&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required id=&quot;id_for_subject&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_message&quot;&gt;Message -&amp;gt;&lt;/label&gt;&lt;textarea name=&quot;message&quot; cols=&quot;40&quot; rows=&quot;10&quot; required id=&quot;id_for_message&quot;&gt;&lt;/textarea&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_sender&quot;&gt;Sender -&amp;gt;&lt;/label&gt;&lt;input type=&quot;email&quot; name=&quot;sender&quot; required id=&quot;id_for_sender&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_for_cc_myself&quot;&gt;Cc myself -&amp;gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_for_cc_myself&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>接尾文字列は、ラベルの最後の文字が句読文字 (英語では、 <code class=\"docutils literal notranslate\">.</code>, <code class=\"docutils literal notranslate\">!</code>, <code class=\"docutils literal notranslate\">?</code>, <code class=\"docutils literal notranslate\">:</code>) でない場合に限ってつけられます。</p>\n<p>フィールドはそれ自身の <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.label_suffix\" title=\"django.forms.Field.label_suffix\"><code class=\"xref py py-attr docutils literal notranslate\">label_suffix</code></a> を定義することもできます。これは <a class=\"reference internal\" href=\"#django.forms.Form.label_suffix\" title=\"django.forms.Form.label_suffix\"><code class=\"xref py py-attr docutils literal notranslate\">Form.label_suffix</code></a> よりも優先されます。また、 <code class=\"docutils literal notranslate\">label_suffix</code> パラメータを <a class=\"reference internal\" href=\"#django.forms.BoundField.label_tag\" title=\"django.forms.BoundField.label_tag\"><code class=\"xref py py-meth docutils literal notranslate\">label_tag()</code></a> / <a class=\"reference internal\" href=\"#django.forms.BoundField.legend_tag\" title=\"django.forms.BoundField.legend_tag\"><code class=\"xref py py-meth docutils literal notranslate\">legend_tag()</code></a> に使用することで、実行時に接尾辞を上書きすることもできます。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.use_required_attribute\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">use_required_attribute</span><a class=\"heading-anchor\" href=\"#django.forms.Form.use_required_attribute\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">True</code> (デフォルト値) に設定した場合、必須フォームフィールドは HTMLの <code class=\"docutils literal notranslate\">required</code> 属性を伴います。</p>\n<p><a class=\"reference internal\" href=\"/ja/5.2/topics/forms/formsets/\"><span class=\"doc\">Formsets</span></a> は、フォームセットにフォームを追加または削除したときのブラウザの誤検証を避けるため、 <code class=\"docutils literal notranslate\">use_required_attribute=False</code> としてフォームをインスタンス化します。</p>\n</section>\n<section id=\"configuring-the-rendering-of-a-form-s-widgets\">\n<h3>フォームウィジェットのレンダリングを設定する<a class=\"heading-anchor\" href=\"#configuring-the-rendering-of-a-form-s-widgets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.default_renderer\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">default_renderer</span><a class=\"heading-anchor\" href=\"#django.forms.Form.default_renderer\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フォームの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/\"><span class=\"doc\">renderer</span></a> を指定します。デフォルトは <code class=\"docutils literal notranslate\">None</code> で、 <a class=\"reference internal\" href=\"/ja/5.2/ref/settings/#std-setting-FORM_RENDERER\"><code class=\"xref std std-setting docutils literal notranslate\">FORM_RENDERER</code></a> 設定で指定されたデフォルトのレンダラーを使用することを意味します。</p>\n<p>これはクラスの属性としてフォーム定義の際に設定するもしくは、<code class=\"docutils literal notranslate\">Form.__init__()</code> に <code class=\"docutils literal notranslate\">renderer</code> 引数を使うことで設定します。たとえば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    default_renderer <span class=\"o\">=</span> MyRenderer<span class=\"p\">()</span>\n</code></pre></div>\n<p>もしくは:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>form <span class=\"o\">=</span> MyForm<span class=\"p\">(</span>renderer<span class=\"o\">=</span>MyRenderer<span class=\"p\">())</span>\n</code></pre></div>\n</section>\n<section id=\"notes-on-field-ordering\">\n<h3>フィールドの順序に関する記述<a class=\"heading-anchor\" href=\"#notes-on-field-ordering\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\">as_p()</code>, <code class=\"docutils literal notranslate\">as_ul()</code>,  <code class=\"docutils literal notranslate\">as_table()</code> ショートカットでは、フィールドはフォームクラスで定義した順序で表示されます。たとえば、 <code class=\"docutils literal notranslate\">ContactForm</code> の例では、フィールドは <code class=\"docutils literal notranslate\">subject</code>, <code class=\"docutils literal notranslate\">message</code>, <code class=\"docutils literal notranslate\">sender</code>, <code class=\"docutils literal notranslate\">cc_myself</code> の順で定義されます。 HTML アウトプットの順序を変更するには、クラスの中で定義する順序を変えます。</p>\n<p>順序のカスタマイズには、ほかにもいくつかの方法があります:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.field_order\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">field_order</span><a class=\"heading-anchor\" href=\"#django.forms.Form.field_order\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>デフォルトでは <code class=\"docutils literal notranslate\">Form.field_order=None</code> で、これはフォームクラスでフィールドを定義した順番を保持します。<code class=\"docutils literal notranslate\">field_order</code> がフィールド名のリストである場合、指定されたリストに従ってフィールドが順序付けられ、残りのフィールドはデフォルトの順序に従って追加されます。リスト内の未知のフィールド名は無視されます。これにより、サブクラスでフィールドを <code class=\"docutils literal notranslate\">None</code> に設定して無効にしても、順序を再定義する必要がなくなります。</p>\n<p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> に <code class=\"docutils literal notranslate\">Form.field_order</code> 引数を使うことで、フィールドの順序をオーバーライドすることもできます。 <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> の中で <a class=\"reference internal\" href=\"#django.forms.Form.field_order\" title=\"django.forms.Form.field_order\"><code class=\"xref py py-attr docutils literal notranslate\">field_order</code></a> が定義されていて、 <em>かつ</em> <code class=\"docutils literal notranslate\">Form</code> をインスタンス化する際に <code class=\"docutils literal notranslate\">field_order</code> をインクルードする場合、後者の <code class=\"docutils literal notranslate\">field_order</code> が優先されます。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.order_fields\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">order_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field_order</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.order_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>また、 <code class=\"docutils literal notranslate\">order_fields()</code> に <a class=\"reference internal\" href=\"#django.forms.Form.field_order\" title=\"django.forms.Form.field_order\"><code class=\"xref py py-attr docutils literal notranslate\">field_order</code></a> と同様のフィールド名のリストを用いて、いつでもフィールドの順序を変更できます。</p>\n</section>\n<section id=\"how-errors-are-displayed\">\n<span id=\"form-error-display\"></span><h3>エラーの表示方法<a class=\"heading-anchor\" href=\"#how-errors-are-displayed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>バインドされた <code class=\"docutils literal notranslate\">Form</code> オブジェクトをレンダリングするとき、まだバリデーションが実行されていなければ、自動的にフォームのバリデーションが実行されます。HTML 出力には、バリデーションエラーが <code class=\"docutils literal notranslate\">&lt;ul class=&quot;errorlist&quot;&gt;</code> のような形式で含まれます。</p>\n<p>以下の例で確認してみます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;invalid email address&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ContactForm<span class=\"p\">(</span>data<span class=\"p\">)</span><span class=\"o\">.</span>as_div<span class=\"p\">()</span>\n</code></pre></div>\n<p>… これは次のようなHTMLを生成します:</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_subject&quot;</span><span class=\"p\">&gt;</span>Subject:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">ul</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;errorlist&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_subject_error&quot;</span><span class=\"p\">&gt;&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>This field is required.<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;subject&quot;</span> <span class=\"na\">maxlength</span><span class=\"o\">=</span><span class=\"s\">&quot;100&quot;</span> <span class=\"na\">required</span> <span class=\"na\">aria-invalid</span><span class=\"o\">=</span><span class=\"s\">&quot;true&quot;</span> <span class=\"na\">aria-describedby</span><span class=\"o\">=</span><span class=\"s\">&quot;id_subject_error&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_subject&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_message&quot;</span><span class=\"p\">&gt;</span>Message:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">textarea</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;message&quot;</span> <span class=\"na\">cols</span><span class=\"o\">=</span><span class=\"s\">&quot;40&quot;</span> <span class=\"na\">rows</span><span class=\"o\">=</span><span class=\"s\">&quot;10&quot;</span> <span class=\"na\">required</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_message&quot;</span><span class=\"p\">&gt;</span>Hi there<span class=\"p\">&lt;/</span><span class=\"nt\">textarea</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_sender&quot;</span><span class=\"p\">&gt;</span>Sender:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">ul</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;errorlist&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_sender_error&quot;</span><span class=\"p\">&gt;&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>Enter a valid email address.<span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;&lt;/</span><span class=\"nt\">ul</span><span class=\"p\">&gt;</span>\n  <span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;email&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;sender&quot;</span> <span class=\"na\">value</span><span class=\"o\">=</span><span class=\"s\">&quot;invalid email address&quot;</span> <span class=\"na\">maxlength</span><span class=\"o\">=</span><span class=\"s\">&quot;320&quot;</span> <span class=\"na\">required</span> <span class=\"na\">aria-invalid</span><span class=\"o\">=</span><span class=\"s\">&quot;true&quot;</span> <span class=\"na\">aria-describedby</span><span class=\"o\">=</span><span class=\"s\">&quot;id_sender_error&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_sender&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;id_cc_myself&quot;</span><span class=\"p\">&gt;</span>Cc myself:<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">input</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;checkbox&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;cc_myself&quot;</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;id_cc_myself&quot;</span> <span class=\"na\">checked</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">div</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>Django のデフォルトのフォームテンプレートでは、フィールドに <code class=\"docutils literal notranslate\">auto_id</code> が設定されていて、かつカスタムの <code class=\"docutils literal notranslate\">aria-describedby</code> が指定されていない場合、バリデーションエラーを該当する入力要素と関連付けるために <code class=\"docutils literal notranslate\">aria-describedby</code> HTML 属性が使用されます。ウィジェット定義時にカスタムの <code class=\"docutils literal notranslate\">aria-describedby</code> を指定すると、デフォルト値が上書きされます。</p>\n<p>ウィジェットが <code class=\"docutils literal notranslate\">&lt;fieldset&gt;</code> 内でレンダリングされる場合は、 <code class=\"docutils literal notranslate\">aria-describedby</code> はその要素に追加されます。そうでない場合は、<code class=\"docutils literal notranslate\">aria-describedby</code> はウィジェット自体の HTML 要素（ <code class=\"docutils literal notranslate\">&lt;input&gt;</code> など）に追加されます。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>入力とエラーを関連づけるために <code class=\"docutils literal notranslate\">aria-describedby</code> が追加されました。</p>\n</aside>\n</section>\n<section id=\"customizing-the-error-list-format\">\n<span id=\"ref-forms-error-list-format\"></span><h3>エラーリストのフォーマットをカスタムする<a class=\"heading-anchor\" href=\"#customizing-the-error-list-format\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ErrorList</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">initlist<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">error_class<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">renderer<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">field_id<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、フォームはバリデーションエラーを整形するために <code class=\"docutils literal notranslate\">django.forms.utils.ErrorList</code> を使用します。<code class=\"docutils literal notranslate\">ErrorList</code> はリストのようなオブジェクトであり、<code class=\"docutils literal notranslate\">initlist</code> はエラーのリストです。さらに、このクラスは以下の属性とメソッドを持っています。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">field_id</code> 引数が追加されました。</p>\n</aside>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.error_class\">\n<span class=\"sig-name descname\">error_class</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.error_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>エラーリストをレンダリングする際に使用されるCSSクラス。指定されたクラスは、デフォルトの <code class=\"docutils literal notranslate\">errorlist</code> クラスに追加されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.renderer\">\n<span class=\"sig-name descname\">renderer</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.renderer\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">ErrorList</code> に使用する <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/\"><span class=\"doc\">レンダラー</span></a> を指定します。デフォルトでは <code class=\"docutils literal notranslate\">None</code> であり、これは <a class=\"reference internal\" href=\"/ja/5.2/ref/settings/#std-setting-FORM_RENDERER\"><code class=\"xref std std-setting docutils literal notranslate\">FORM_RENDERER</code></a> 設定で指定されたデフォルトのレンダラーを使用することを意味します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.field_id\">\n<span class=\"sig-name descname\">field_id</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.field_id\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>エラーが関連するフィールドに対応する <code class=\"docutils literal notranslate\">id</code> を指定します。これにより、エラーテンプレート内で HTML の <code class=\"docutils literal notranslate\">id</code> 属性を付与でき、エラーとフィールドを関連付けるのに役立ちます。デフォルトのテンプレートでは、 <code class=\"docutils literal notranslate\">id=&quot;{{ field_id }}_error&quot;</code> の形式が使用され、値は :meth:.`Form.add_error` によって、そのフィールドの <a class=\"reference internal\" href=\"#django.forms.BoundField.auto_id\" title=\"django.forms.BoundField.auto_id\"><code class=\"xref py py-attr docutils literal notranslate\">auto_id</code></a> をもとに自動的に提供されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.template_name\">\n<span class=\"sig-name descname\">template_name</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.template_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">__str__</code> や <a class=\"reference internal\" href=\"#django.forms.ErrorList.render\" title=\"django.forms.ErrorList.render\"><code class=\"xref py py-meth docutils literal notranslate\">render()</code></a> を呼び出した際に使用されるテンプレートの名前です。デフォルトでは、これは <code class=\"docutils literal notranslate\">'django/forms/errors/list/default.html'</code> であり、<code class=\"docutils literal notranslate\">'ul.html'</code> テンプレートのプロキシとなります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.template_name_text\">\n<span class=\"sig-name descname\">template_name_text</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.template_name_text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.forms.ErrorList.as_text\" title=\"django.forms.ErrorList.as_text\"><code class=\"xref py py-meth docutils literal notranslate\">as_text()</code></a> を呼び出す際に使用されるテンプレートの名前です。デフォルトでは、これは <code class=\"docutils literal notranslate\">'django/forms/errors/list/text.html'</code> です。このテンプレートは、エラーを箇条書きのリストとしてレンダリングします。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.template_name_ul\">\n<span class=\"sig-name descname\">template_name_ul</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.template_name_ul\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.forms.ErrorList.as_ul\" title=\"django.forms.ErrorList.as_ul\"><code class=\"xref py py-meth docutils literal notranslate\">as_ul()</code></a> を呼び出すときに使用されるテンプレートの名前です。デフォルトではこれは <code class=\"docutils literal notranslate\">'django/forms/errors/list/ul.html'</code> です。このテンプレートは、 <a class=\"reference internal\" href=\"#django.forms.ErrorList.error_class\" title=\"django.forms.ErrorList.error_class\"><code class=\"xref py py-attr docutils literal notranslate\">error_class</code></a> で定義された CSS クラスを持つ包括的な <code class=\"docutils literal notranslate\">&lt;ul&gt;</code> で <code class=\"docutils literal notranslate\">&lt;li&gt;</code> タグ内のエラーをレンダリングします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.get_context\">\n<span class=\"sig-name descname\">get_context</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.get_context\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>テンプレート内のエラーのレンダリング用のコンテキストを返します。</p>\n<p>利用可能なコンテキストは次のとおりです。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">errors</code>: エラーのリスト。</p></li>\n<li><p><code class=\"docutils literal notranslate\">error_class</code>: CSSクラスの文字列。</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.render\">\n<span class=\"sig-name descname\">render</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">template_name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">context<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">renderer<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.render\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>renderメソッドは、 <code class=\"docutils literal notranslate\">__str__</code> と <a class=\"reference internal\" href=\"#django.forms.ErrorList.as_ul\" title=\"django.forms.ErrorList.as_ul\"><code class=\"xref py py-meth docutils literal notranslate\">as_ul()</code></a> メソッドの両方から呼び出されます。</p>\n<p>すべての引数はオプションで、デフォルト値は以下の通りです:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">template_name</code>: <a class=\"reference internal\" href=\"#django.forms.ErrorList.template_name\" title=\"django.forms.ErrorList.template_name\"><code class=\"xref py py-attr docutils literal notranslate\">template_name</code></a> が返す値</p></li>\n<li><p><code class=\"docutils literal notranslate\">context</code>: <a class=\"reference internal\" href=\"#django.forms.ErrorList.get_context\" title=\"django.forms.ErrorList.get_context\"><code class=\"xref py py-meth docutils literal notranslate\">get_context()</code></a> が返す値</p></li>\n<li><p><code class=\"docutils literal notranslate\">renderer</code>: <a class=\"reference internal\" href=\"#django.forms.ErrorList.renderer\" title=\"django.forms.ErrorList.renderer\"><code class=\"xref py py-attr docutils literal notranslate\">renderer</code></a> が返す値</p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.as_text\">\n<span class=\"sig-name descname\">as_text</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.as_text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>エラーリストを <a class=\"reference internal\" href=\"#django.forms.ErrorList.template_name_text\" title=\"django.forms.ErrorList.template_name_text\"><code class=\"xref py py-attr docutils literal notranslate\">template_name_text</code></a> で定義されたテンプレートを使用してレンダリングします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.ErrorList.as_ul\">\n<span class=\"sig-name descname\">as_ul</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.ErrorList.as_ul\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.forms.ErrorList.template_name_ul\" title=\"django.forms.ErrorList.template_name_ul\"><code class=\"xref py py-attr docutils literal notranslate\">template_name_ul</code></a> で定義されたテンプレートを使用してエラーリストをレンダリングします。</p>\n</dd></dl>\n\n<p>エラーのレンダリングをカスタマイズしたい場合は、<a class=\"reference internal\" href=\"#django.forms.ErrorList.template_name\" title=\"django.forms.ErrorList.template_name\"><code class=\"xref py py-attr docutils literal notranslate\">template_name</code></a> 属性をオーバーライドするか、あるいはデフォルトテンプレートをオーバーライドすることによって達成できます。詳しくは <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#overriding-built-in-form-templates\"><span class=\"std std-ref\">組み込みのフォームテンプレートをオーバーライドする</span></a> も参照してください。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"more-granular-output\">\n<h2>さらに詳細なアウトプット<a class=\"heading-anchor\" href=\"#more-granular-output\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\">as_p()</code>, <code class=\"docutils literal notranslate\">as_ul()</code>, <code class=\"docutils literal notranslate\">as_table()</code> メソッドはショートカットです -- フォームオブジェクトを表示する唯一の方法ではありません。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BoundField</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンスのひとつのフィールドを HTML として表示したり、その属性にアクセスするのに使います。</p>\n<p>このオブジェクトの <code class=\"docutils literal notranslate\">__str__()</code> メソッドは、このフィールドの HTML を表示します。</p>\n<p>フォームまたはフィールドごとに異なる <code class=\"docutils literal notranslate\">BoundField</code> クラスを指定したい場合は、それぞれ <a class=\"reference internal\" href=\"#django.forms.Form.bound_field_class\" title=\"django.forms.Form.bound_field_class\"><code class=\"xref py py-attr docutils literal notranslate\">Form.bound_field_class</code></a> 、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.bound_field_class\" title=\"django.forms.Field.bound_field_class\"><code class=\"xref py py-attr docutils literal notranslate\">Field.bound_field_class</code></a> を使用することができます。</p>\n<p><code class=\"docutils literal notranslate\">BoundField</code> をオーバーライドする例は、 <a class=\"reference internal\" href=\"#custom-boundfield\"><span class=\"std std-ref\">BoundField のカスタマイズ</span></a> を確認してください。</p>\n</dd></dl>\n\n<p>単一の <code class=\"docutils literal notranslate\">BoundField</code> を取得するには、フィールド名をキーとしてフォームに対して辞書参照構文を使用します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>form <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>form<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;</span>\n</code></pre></div>\n<p>全ての <code class=\"docutils literal notranslate\">BoundField</code> オブジェクトを取得するには、フォームをイテレートします:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>form <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> boundfield <span class=\"ow\">in</span> form<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>boundfield<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">&lt;input id=&quot;id_subject&quot; type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;</span>\n<span class=\"go\">&lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;</span>\n<span class=\"go\">&lt;input type=&quot;email&quot; name=&quot;sender&quot; id=&quot;id_sender&quot; required&gt;</span>\n<span class=\"go\">&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot; id=&quot;id_cc_myself&quot;&gt;</span>\n</code></pre></div>\n<p>フィールド固有の出力は、フォームオブジェクトの <code class=\"docutils literal notranslate\">auto_id</code> 設定を反映します:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&lt;input type=&quot;text&quot; name=&quot;message&quot; required&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"s2\">&quot;id_</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&lt;input type=&quot;text&quot; name=&quot;message&quot; id=&quot;id_message&quot; required&gt;</span>\n</code></pre></div>\n<section id=\"attributes-of-boundfield\">\n<h3><code class=\"docutils literal notranslate\">BoundField</code> の属性一覧<a class=\"heading-anchor\" href=\"#attributes-of-boundfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.aria_describedby\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">aria_describedby</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.aria_describedby\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>フィールドをそのヘルプテキストやエラーメッセージと関連付けるための <code class=\"docutils literal notranslate\">aria-describedby</code> 参照を返します。ただし、<a class=\"reference internal\" href=\"/ja/5.2/ref/forms/widgets/#django.forms.Widget.attrs\" title=\"django.forms.Widget.attrs\"><code class=\"xref py py-attr docutils literal notranslate\">Widget.attrs</code></a> に <code class=\"docutils literal notranslate\">aria-describedby</code> がすでに設定されている場合は、ユーザー定義の属性を保持するために <code class=\"docutils literal notranslate\">None</code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.auto_id\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">auto_id</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.auto_id\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この <code class=\"docutils literal notranslate\">BoundField</code> の HTML ID 属性。 <a class=\"reference internal\" href=\"#django.forms.Form.auto_id\" title=\"django.forms.Form.auto_id\"><code class=\"xref py py-attr docutils literal notranslate\">Form.auto_id</code></a> が <code class=\"docutils literal notranslate\">False</code> であれば、空の文字列を返します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.data\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">data</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このプロパティは、ウィジェットの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/widgets/#django.forms.Widget.value_from_datadict\" title=\"django.forms.Widget.value_from_datadict\"><code class=\"xref py py-meth docutils literal notranslate\">value_from_datadict()</code></a> メソッドによって抽出された、この <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> のデータを返します。もしデータが与えられていない場合は、 <code class=\"docutils literal notranslate\">None</code> を返します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>unbound_form <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>unbound_form<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>data<span class=\"p\">)</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>bound_form <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;My Subject&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>bound_form<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>data<span class=\"p\">)</span>\n<span class=\"go\">My Subject</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.errors\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">errors</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.errors\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>プリント時に HTML の <code class=\"docutils literal notranslate\">&lt;ul class=&quot;errorlist&quot;&gt;</code> として表示される <a class=\"reference internal\" href=\"#ref-forms-error-list-format\"><span class=\"std std-ref\">リストのようなオブジェクト</span></a> です:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hi&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"p\">,</span> auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">&lt;input type=&quot;text&quot; name=&quot;message&quot; required aria-invalid=&quot;true&quot;&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>errors\n<span class=\"go\">[&#39;This field is required.&#39;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>errors<span class=\"p\">)</span>\n<span class=\"go\">&lt;ul class=&quot;errorlist&quot;&gt;&lt;li&gt;This field is required.&lt;/li&gt;&lt;/ul&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>errors\n<span class=\"go\">[]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>errors<span class=\"p\">)</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">str</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>errors<span class=\"p\">)</span>\n<span class=\"go\">&#39;&#39;</span>\n</code></pre></div>\n<p>エラーを含むフィールドをレンダリングする際、そのフィールドのウィジェットに <code class=\"docutils literal notranslate\">aria-invalid=&quot;true&quot;</code> が設定され、スクリーンリーダーユーザーにエラーが存在することを示します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.field\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">field</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> がラップしているフォームクラスの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> インスタンス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.form\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">form</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> がバインドされている <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> インスタンス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.help_text\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">help_text</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.help_text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.help_text\" title=\"django.forms.Field.help_text\"><code class=\"xref py py-attr docutils literal notranslate\">help_text</code></a> 。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.html_name\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">html_name</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.html_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ウィジェットのHTMLの <code class=\"docutils literal notranslate\">name</code> 属性で使用される名前です。これは <a class=\"reference internal\" href=\"#django.forms.Form.prefix\" title=\"django.forms.Form.prefix\"><code class=\"xref py py-attr docutils literal notranslate\">prefix</code></a> の形式を考慮します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.id_for_label\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">id_for_label</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.id_for_label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このプロパティを使用して、このフィールドのIDをレンダリングします。例えば、(<a class=\"reference internal\" href=\"#django.forms.BoundField.label_tag\" title=\"django.forms.BoundField.label_tag\"><code class=\"xref py py-meth docutils literal notranslate\">label_tag()</code></a>/<a class=\"reference internal\" href=\"#django.forms.BoundField.legend_tag\" title=\"django.forms.BoundField.legend_tag\"><code class=\"xref py py-meth docutils literal notranslate\">legend_tag()</code></a> がこれを行ってくれるにも関わらず、) テンプレートで手動で <code class=\"docutils literal notranslate\">&lt;label&gt;</code> を構築している場合は:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{{</span> <span class=\"nv\">form.my_field.id_for_label</span> <span class=\"cp\">}}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;</span><span class=\"cp\">{{</span> <span class=\"nv\">my_field</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>デフォルトでは、これはフィールドの名前に <code class=\"docutils literal notranslate\">id_</code> を前につけたものになります(上の例では &quot;<code class=\"docutils literal notranslate\">id_my_field</code>&quot;)。フィールドのウィジェットの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/widgets/#django.forms.Widget.attrs\" title=\"django.forms.Widget.attrs\"><code class=\"xref py py-attr docutils literal notranslate\">attrs</code></a> を設定することで、IDを変更できます。例えば、以下のようにフィールドを宣言します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>my_field <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">(</span>widget<span class=\"o\">=</span>forms<span class=\"o\">.</span>TextInput<span class=\"p\">(</span>attrs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;myFIELD&quot;</span><span class=\"p\">}))</span>\n</code></pre></div>\n<p>そして、上記のテンプレートを使用すると、以下のように表示されます:</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">label</span> <span class=\"na\">for</span><span class=\"o\">=</span><span class=\"s\">&quot;myFIELD&quot;</span><span class=\"p\">&gt;</span>...<span class=\"p\">&lt;/</span><span class=\"nt\">label</span><span class=\"p\">&gt;&lt;</span><span class=\"nt\">input</span> <span class=\"na\">id</span><span class=\"o\">=</span><span class=\"s\">&quot;myFIELD&quot;</span> <span class=\"na\">type</span><span class=\"o\">=</span><span class=\"s\">&quot;text&quot;</span> <span class=\"na\">name</span><span class=\"o\">=</span><span class=\"s\">&quot;my_field&quot;</span> <span class=\"na\">required</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.initial\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">initial</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.initial\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.forms.BoundField.initial\" title=\"django.forms.BoundField.initial\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.initial</code></a> を使用して、フォームフィールドの初期データを取得します。データは、存在する場合は <a class=\"reference internal\" href=\"#django.forms.Form.initial\" title=\"django.forms.Form.initial\"><code class=\"xref py py-attr docutils literal notranslate\">Form.initial</code></a> から、そうでなければ <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.initial\" title=\"django.forms.Field.initial\"><code class=\"xref py py-attr docutils literal notranslate\">Field.initial</code></a> から取得されます。呼び出し可能オブジェクトの値は評価されます。より多くの例については、 <a class=\"reference internal\" href=\"#ref-forms-initial-form-values\"><span class=\"std std-ref\">フォームの初期値</span></a> を参照してください。</p>\n<p><a class=\"reference internal\" href=\"#django.forms.BoundField.initial\" title=\"django.forms.BoundField.initial\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.initial</code></a> はその返り値をキャッシュします。これは、返り値が変わる可能性がある呼び出し可能オブジェクト(例: <code class=\"docutils literal notranslate\">datetime.now</code> や <code class=\"docutils literal notranslate\">uuid.uuid4</code> など)を扱う際に特に便利です。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">DatedCommentForm</span><span class=\"p\">(</span>CommentForm<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    created <span class=\"o\">=</span> forms<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>initial<span class=\"o\">=</span>datetime<span class=\"o\">.</span>now<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> DatedCommentForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;created&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>initial\n<span class=\"go\">datetime.datetime(2021, 7, 27, 9, 5, 54)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;created&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>initial\n<span class=\"go\">datetime.datetime(2021, 7, 27, 9, 5, 54)</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.forms.Form.get_initial_for_field\" title=\"django.forms.Form.get_initial_for_field\"><code class=\"xref py py-meth docutils literal notranslate\">get_initial_for_field()</code></a> よりも <a class=\"reference internal\" href=\"#django.forms.BoundField.initial\" title=\"django.forms.BoundField.initial\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.initial</code></a> を使うことをお勧めします。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.is_hidden\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">is_hidden</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.is_hidden\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> のウィジェットが非表示の場合、 <code class=\"docutils literal notranslate\">True</code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.label\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">label</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.label\" title=\"django.forms.Field.label\"><code class=\"xref py py-attr docutils literal notranslate\">label</code></a> 。これは <a class=\"reference internal\" href=\"#django.forms.BoundField.label_tag\" title=\"django.forms.BoundField.label_tag\"><code class=\"xref py py-meth docutils literal notranslate\">label_tag()</code></a>/<a class=\"reference internal\" href=\"#django.forms.BoundField.legend_tag\" title=\"django.forms.BoundField.legend_tag\"><code class=\"xref py py-meth docutils literal notranslate\">legend_tag()</code></a> で使用されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.name\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このフィールドのフォーム上での名前:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>name<span class=\"p\">)</span>\n<span class=\"go\">subject</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>name<span class=\"p\">)</span>\n<span class=\"go\">message</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.template_name\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">template_name</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.template_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.forms.BoundField.as_field_group\" title=\"django.forms.BoundField.as_field_group\"><code class=\"xref py py-meth docutils literal notranslate\">BoundField.as_field_group()</code></a> でレンダリングされるテンプレートの名前。</p>\n<p>指定されていれば <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.template_name\" title=\"django.forms.Field.template_name\"><code class=\"xref py py-attr docutils literal notranslate\">template_name</code></a> の値を、そうでなければ <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#django.forms.renderers.BaseRenderer.field_template_name\" title=\"django.forms.renderers.BaseRenderer.field_template_name\"><code class=\"xref py py-attr docutils literal notranslate\">field_template_name</code></a> の値を返すプロパティ。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.use_fieldset\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">use_fieldset</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.use_fieldset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この BoundField ウィジェットの <code class=\"docutils literal notranslate\">use_fieldset</code> 属性の値を返します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.widget_type\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">widget_type</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.widget_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ラップされたフィールドのウィジェットのクラス名を小文字にして、末尾の <code class=\"docutils literal notranslate\">input</code> や <code class=\"docutils literal notranslate\">widget</code> を削除したものを返します。これは、ウィジェットのタイプに依存するレイアウトを持つフォームを構築する際に使用できます。例えば：</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">for</span> <span class=\"nv\">field</span> <span class=\"k\">in</span> <span class=\"nv\">form</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">field.widget_type</span> <span class=\"o\">==</span> <span class=\"s1\">&#39;checkbox&#39;</span> <span class=\"cp\">%}</span>\n        # render one way\n    <span class=\"cp\">{%</span> <span class=\"k\">else</span> <span class=\"cp\">%}</span>\n        # render another way\n    <span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endfor</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"methods-of-boundfield\">\n<h3><code class=\"docutils literal notranslate\">BoundField</code> のメソッド<a class=\"heading-anchor\" href=\"#methods-of-boundfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.as_field_group\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">as_field_group</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.as_field_group\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドを <a class=\"reference internal\" href=\"#django.forms.BoundField.render\" title=\"django.forms.BoundField.render\"><code class=\"xref py py-meth docutils literal notranslate\">BoundField.render()</code></a> を使用してデフォルト値でレンダリングし、設定されている場合はテンプレートの <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.template_name\" title=\"django.forms.Field.template_name\"><code class=\"xref py py-attr docutils literal notranslate\">template_name</code></a> 、そうでなければ <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#django.forms.renderers.BaseRenderer.field_template_name\" title=\"django.forms.renderers.BaseRenderer.field_template_name\"><code class=\"xref py py-attr docutils literal notranslate\">field_template_name</code></a> を使用して、<code class=\"docutils literal notranslate\">BoundField</code> をラベル、ヘルプテキスト、エラーとともにレンダリングします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.as_hidden\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">as_hidden</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">attrs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.as_hidden\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これを <code class=\"docutils literal notranslate\">&lt;input type=&quot;hidden&quot;&gt;</code> として表現するためのHTMLの文字列を返します。</p>\n<p><code class=\"docutils literal notranslate\">**kwargs</code> は <a class=\"reference internal\" href=\"#django.forms.BoundField.as_widget\" title=\"django.forms.BoundField.as_widget\"><code class=\"xref py py-meth docutils literal notranslate\">as_widget()</code></a> に渡されます。</p>\n<p>このメソッドは主に内部で使用されます。代わりにウィジェットを使用すべきです。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.as_widget\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">as_widget</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">widget<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">attrs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">only_initial<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.as_widget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>渡されたウィジェットをレンダリングして、<code class=\"docutils literal notranslate\">attrs</code> として渡された任意のHTML属性を追加してフィールドをレンダリングします。ウィジェットが指定されていない場合、フィールドのデフォルトウィジェットが使用されます。</p>\n<p><code class=\"docutils literal notranslate\">only_initial</code> は Django の内部で使用されるものであり、明示的に設定すべきではありません。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.css_classes\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">css_classes</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">extra_classes<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.css_classes\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Djangoのレンダリングショートカットを利用すると、必須のフォームフィールドやエラーを含むフィールドを示すためのCSSクラスが使用されます。フォームを手動でレンダリングする場合は、 <code class=\"docutils literal notranslate\">css_classes</code> メソッドを使用してこれらのCSSクラスにアクセスできます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>css_classes<span class=\"p\">()</span>\n<span class=\"go\">&#39;required&#39;</span>\n</code></pre></div>\n<p>エラークラスと必須クラスが必要な場合に加えて、追加のクラスを提供したい場合は、引数としてそのクラスを提供できます:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>css_classes<span class=\"p\">(</span><span class=\"s2\">&quot;foo bar&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;foo bar required&#39;</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.get_context\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">get_context</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.get_context\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>レンダリングするためのテンプレートコンテキストを返します。利用可能なコンテキストは、バインドされたフィールドのインスタンスである <code class=\"docutils literal notranslate\">field</code> です。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.label_tag\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">label_tag</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">contents<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">attrs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">label_suffix<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tag<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.label_tag\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フォームフィールドのラベルタグを、 <a class=\"reference internal\" href=\"#django.forms.Form.template_name_label\" title=\"django.forms.Form.template_name_label\"><code class=\"xref py py-attr docutils literal notranslate\">Form.template_name_label</code></a> で指定されたテンプレートを使用してレンダリングします。</p>\n<p>利用可能なコンテキストは次のとおりです。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">field</code>: この <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> のインスタンス。</p></li>\n<li><p><code class=\"docutils literal notranslate\">contents</code>: デフォルトでは <a class=\"reference internal\" href=\"#django.forms.BoundField.label\" title=\"django.forms.BoundField.label\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.label</code></a> と <a class=\"reference internal\" href=\"#django.forms.Form.label_suffix\" title=\"django.forms.Form.label_suffix\"><code class=\"xref py py-attr docutils literal notranslate\">Form.label_suffix</code></a> (または設定されている場合は <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.label_suffix\" title=\"django.forms.Field.label_suffix\"><code class=\"xref py py-attr docutils literal notranslate\">Field.label_suffix</code></a>) の結合された文字列です。これは <code class=\"docutils literal notranslate\">contents</code> と <code class=\"docutils literal notranslate\">label_suffix</code> 引数によって上書きできます。</p></li>\n<li><p><code class=\"docutils literal notranslate\">attrs</code>: <code class=\"docutils literal notranslate\">for</code>、<a class=\"reference internal\" href=\"#django.forms.Form.required_css_class\" title=\"django.forms.Form.required_css_class\"><code class=\"xref py py-attr docutils literal notranslate\">Form.required_css_class</code></a>、および <code class=\"docutils literal notranslate\">id</code> を含む <code class=\"docutils literal notranslate\">dict</code> 。<code class=\"docutils literal notranslate\">id</code> はフィールドのウィジェット <code class=\"docutils literal notranslate\">attrs</code> または <a class=\"reference internal\" href=\"#django.forms.BoundField.auto_id\" title=\"django.forms.BoundField.auto_id\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.auto_id</code></a> によって生成されます。追加の属性は <code class=\"docutils literal notranslate\">attrs</code> 引数によって提供できます。</p></li>\n<li><p><code class=\"docutils literal notranslate\">use_tag</code>: ラベルに <code class=\"docutils literal notranslate\">id</code> がある場合は <code class=\"docutils literal notranslate\">True</code>、そうでない場合は <code class=\"docutils literal notranslate\">False</code> の真偽値です。<code class=\"docutils literal notranslate\">False</code> の場合、デフォルトテンプレートは <code class=\"docutils literal notranslate\">tag</code> を省略します。</p></li>\n<li><p><code class=\"docutils literal notranslate\">tag</code>: タグをカスタマイズするオプションの文字列で、デフォルトは <code class=\"docutils literal notranslate\">label</code> です。</p></li>\n</ul>\n<aside class=\"admonition admonition-tip\" role=\"note\">\n<p class=\"admonition-title\">Tip</p>\n<p>テンプレートでは、<code class=\"docutils literal notranslate\">field</code> は <code class=\"docutils literal notranslate\">BoundField</code> のインスタンスです。したがって、<code class=\"docutils literal notranslate\">field.field</code> でアクセスする <a class=\"reference internal\" href=\"#django.forms.BoundField.field\" title=\"django.forms.BoundField.field\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.field</code></a> は、あなたが宣言したフィールド、例えば <code class=\"docutils literal notranslate\">forms.CharField</code> になります。</p>\n</aside>\n<p>フォームフィールドのラベルタグを別々にレンダリングするには、その <code class=\"docutils literal notranslate\">label_tag()</code> メソッドを呼び出します:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">})</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>label_tag<span class=\"p\">())</span>\n<span class=\"go\">&lt;label for=&quot;id_message&quot;&gt;Message:&lt;/label&gt;</span>\n</code></pre></div>\n<p>レンダリングをカスタマイズしたい場合は、 <a class=\"reference internal\" href=\"#django.forms.Form.template_name_label\" title=\"django.forms.Form.template_name_label\"><code class=\"xref py py-attr docutils literal notranslate\">Form.template_name_label</code></a> 属性をオーバーライドするか、一般的にはデフォルトのテンプレートをオーバーライドしてください。詳細は、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#overriding-built-in-form-templates\"><span class=\"std std-ref\">組み込みのフォームテンプレートをオーバーライドする</span></a> も参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.legend_tag\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">legend_tag</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">contents<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">attrs<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">label_suffix<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.legend_tag\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">tag='legend'</code> を指定して <a class=\"reference internal\" href=\"#django.forms.BoundField.label_tag\" title=\"django.forms.BoundField.label_tag\"><code class=\"xref py py-meth docutils literal notranslate\">label_tag()</code></a> を呼び出すと、ラベルを <code class=\"docutils literal notranslate\">&lt;legend&gt;</code> タグでレンダリングします。これは、 <code class=\"docutils literal notranslate\">&lt;label&gt;</code> よりも <code class=\"docutils literal notranslate\">&lt;legend&gt;</code> が適しているラジオボタンや複数のチェックボックスウィジェットをレンダリングする際に便利です。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.render\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">render</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">template_name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">context<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">renderer<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.render\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>renderメソッドは <code class=\"docutils literal notranslate\">as_field_group</code> によって呼び出されます。すべての引数はオプションであり、デフォルト値は次のとおりです。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">template_name</code>: <a class=\"reference internal\" href=\"#django.forms.BoundField.template_name\" title=\"django.forms.BoundField.template_name\"><code class=\"xref py py-attr docutils literal notranslate\">BoundField.template_name</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">context</code>: <a class=\"reference internal\" href=\"#django.forms.BoundField.get_context\" title=\"django.forms.BoundField.get_context\"><code class=\"xref py py-meth docutils literal notranslate\">BoundField.get_context()</code></a> が返す値</p></li>\n<li><p><code class=\"docutils literal notranslate\">renderer</code>: <a class=\"reference internal\" href=\"#django.forms.Form.default_renderer\" title=\"django.forms.Form.default_renderer\"><code class=\"xref py py-attr docutils literal notranslate\">Form.default_renderer</code></a> が返す値</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\">template_name</code> を渡すことで、単一の呼び出しに使用されるテンプレートをカスタマイズできます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.BoundField.value\">\n<span class=\"sig-prename descclassname\">BoundField.</span><span class=\"sig-name descname\">value</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.BoundField.value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このメソッドを使用すると、<code class=\"docutils literal notranslate\">Widget</code> によってレンダリングされるフィールドの生の値をレンダリングできます:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>initial <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;welcome&quot;</span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>unbound_form <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>initial<span class=\"o\">=</span>initial<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>bound_form <span class=\"o\">=</span> ContactForm<span class=\"p\">(</span>data<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hi&quot;</span><span class=\"p\">},</span> initial<span class=\"o\">=</span>initial<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>unbound_form<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>value<span class=\"p\">())</span>\n<span class=\"go\">welcome</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>bound_form<span class=\"p\">[</span><span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>value<span class=\"p\">())</span>\n<span class=\"go\">hi</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"customizing-boundfield\">\n<span id=\"custom-boundfield\"></span><h2><code class=\"docutils literal notranslate\">BoundField</code> のカスタマイズ<a class=\"heading-anchor\" href=\"#customizing-boundfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.bound_field_class\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">bound_field_class</span><a class=\"heading-anchor\" href=\"#django.forms.Form.bound_field_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>フォームをレンダリングする際に使用するカスタムの <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> クラスを定義します。これは、プロジェクト全体で設定された :attr:.`BaseRenderer.bound_field_class`  (およびカスタムの <a class=\"reference internal\" href=\"/ja/5.2/ref/settings/#std-setting-FORM_RENDERER\"><code class=\"xref std std-setting docutils literal notranslate\">FORM_RENDERER</code></a> ) よりも優先されますが、フィールド単位で指定された <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field.bound_field_class\" title=\"django.forms.Field.bound_field_class\"><code class=\"xref py py-attr docutils literal notranslate\">Field.bound_field_class</code></a> によって上書きされる可能性があります。</p>\n<p><code class=\"docutils literal notranslate\">bound_field_class</code> はクラス変数として定義されていない場合でも、 <a class=\"reference internal\" href=\"#django.forms.Form\" title=\"django.forms.Form\"><code class=\"xref py py-class docutils literal notranslate\">Form</code></a> または <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> のコンストラクタ引数 <code class=\"docutils literal notranslate\">bound_field_class</code> を使って設定することができます。</p>\n<p>互換性維持のため、カスタムフォームフィールドでは依然として :meth:.`Field.get_bound_field()` をオーバーライドしてカスタムクラスを使用することが可能です。ただし、これまでに挙げた方法が推奨されます。</p>\n<p>テンプレート内でフォームフィールドに関する追加情報へアクセスする必要があり、 <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> のサブクラス化では不十分な場合は、カスタムの <a class=\"reference internal\" href=\"#django.forms.BoundField\" title=\"django.forms.BoundField\"><code class=\"xref py py-class docutils literal notranslate\">BoundField</code></a> を使用するとよいでしょう。</p>\n<p>例えば <code class=\"docutils literal notranslate\">GPSCoordinatesField</code> を使用していて、テンプレート内で座標に関する追加情報にアクセスしたい時は、次のように実装します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">GPSCoordinatesBoundField</span><span class=\"p\">(</span>BoundField<span class=\"p\">):</span>\n    <span class=\"nd\">@property</span>\n    <span class=\"k\">def</span> <span class=\"nf\">country</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">        Return the country the coordinates lie in or None if it can&#39;t be</span>\n<span class=\"sd\">        determined.</span>\n<span class=\"sd\">        &quot;&quot;&quot;</span>\n        value <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>value<span class=\"p\">()</span>\n        <span class=\"k\">if</span> value<span class=\"p\">:</span>\n            <span class=\"k\">return</span> get_country_from_coordinates<span class=\"p\">(</span>value<span class=\"p\">)</span>\n        <span class=\"k\">else</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"kc\">None</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">GPSCoordinatesField</span><span class=\"p\">(</span>Field<span class=\"p\">):</span>\n    bound_field_class <span class=\"o\">=</span> GPSCoordinatesBoundField\n</code></pre></div>\n<p>これで、テンプレート内で <code class=\"docutils literal notranslate\">{{ form.coordinates.country }}</code> を使って国にアクセスできるようになりました。</p>\n<p>デフォルトのフォームフィールドのテンプレートレンダリングをカスタマイズしたい場合もあるでしょう。たとえば、 <a class=\"reference internal\" href=\"#django.forms.BoundField.label_tag\" title=\"django.forms.BoundField.label_tag\"><code class=\"xref py py-meth docutils literal notranslate\">BoundField.label_tag()</code></a> をオーバーライドして、カスタムクラスを追加することができます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">StyledLabelBoundField</span><span class=\"p\">(</span>BoundField<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">label_tag</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> contents<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> attrs<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> label_suffix<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> tag<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        attrs <span class=\"o\">=</span> attrs <span class=\"ow\">or</span> <span class=\"p\">{}</span>\n        attrs<span class=\"p\">[</span><span class=\"s2\">&quot;class&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;wide&quot;</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>label_tag<span class=\"p\">(</span>contents<span class=\"p\">,</span> attrs<span class=\"p\">,</span> label_suffix<span class=\"p\">,</span> tag<span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">UserForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    bound_field_class <span class=\"o\">=</span> StyledLabelBoundField\n    name <span class=\"o\">=</span> CharField<span class=\"p\">()</span>\n</code></pre></div>\n<p>これは、デフォルトのフォームレンダリングを次のように更新します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> UserForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>label_tag<span class=\"p\">)</span>\n<span class=\"go\">&lt;label for=&quot;id_name&quot; class=&quot;wide&quot;&gt;Name:&lt;/label&gt;</span>\n</code></pre></div>\n<p>すべてのフィールドをラップする外側の HTML 要素 に CSS クラスを追加したい場合は、<code class=\"docutils literal notranslate\">BoundField</code> をオーバーライドして、異なる CSS クラスの集合を返すように設定できます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">WrappedBoundField</span><span class=\"p\">(</span>BoundField<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">css_classes</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> extra_classes<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        parent_css_classes <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>css_classes<span class=\"p\">(</span>extra_classes<span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;field-class </span><span class=\"si\">{</span>parent_css_classes<span class=\"si\">}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span>strip<span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">UserForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    bound_field_class <span class=\"o\">=</span> WrappedBoundField\n    name <span class=\"o\">=</span> CharField<span class=\"p\">()</span>\n</code></pre></div>\n<p>これにより、以下のようにフォームレンダリングが更新されます。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> UserForm<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div class=&quot;field-class&quot;&gt;&lt;label for=&quot;id_name&quot;&gt;Name:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;name&quot; required id=&quot;id_name&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>あるいは、プロジェクト全体で <code class=\"docutils literal notranslate\">BoundField</code> クラスを上書きしたい場合は、カスタムの <a class=\"reference internal\" href=\"/ja/5.2/ref/settings/#std-setting-FORM_RENDERER\"><code class=\"xref std std-setting docutils literal notranslate\">FORM_RENDERER</code></a> において <a class=\"reference internal\" href=\"/ja/5.2/ref/forms/renderers/#django.forms.renderers.BaseRenderer.bound_field_class\" title=\"django.forms.renderers.BaseRenderer.bound_field_class\"><code class=\"xref py py-attr docutils literal notranslate\">BaseRenderer.bound_field_class</code></a> を定義することで実現できます。</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">mysite/renderers.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.forms.renderers</span> <span class=\"kn\">import</span> DjangoTemplates\n\n<span class=\"kn\">from</span> <span class=\"nn\">.forms</span> <span class=\"kn\">import</span> CustomBoundField\n\n\n<span class=\"k\">class</span> <span class=\"nc\">CustomRenderer</span><span class=\"p\">(</span>DjangoTemplates<span class=\"p\">):</span>\n    bound_field_class <span class=\"o\">=</span> CustomBoundField\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">settings.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code>FORM_RENDERER <span class=\"o\">=</span> <span class=\"s2\">&quot;mysite.renderers.CustomRenderer&quot;</span>\n</code></pre></figure>\n</section>\n<section id=\"binding-uploaded-files-to-a-form\">\n<span id=\"binding-uploaded-files\"></span><h2>アップロードされたファイルをフォームにバインドする<a class=\"heading-anchor\" href=\"#binding-uploaded-files-to-a-form\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\">FileField</code> と <code class=\"docutils literal notranslate\">ImageField</code> フィールドを持つフォームを扱うのは、通常のフォームよりも少し複雑です。</p>\n<p>まず、ファイルをアップロードするには、<code class=\"docutils literal notranslate\">&lt;form&gt;</code> 要素が <code class=\"docutils literal notranslate\">enctype</code> を <code class=\"docutils literal notranslate\">&quot;multipart/form-data&quot;</code> として正しく定義していることを確認する必要があります:</p>\n<div class=\"code-block\" data-language=\"html\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Html</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Html code\"><code><span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">enctype</span><span class=\"o\">=</span><span class=\"s\">&quot;multipart/form-data&quot;</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span> <span class=\"na\">action</span><span class=\"o\">=</span><span class=\"s\">&quot;/foo/&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>次に、フォームを使用する際には、ファイルデータをバインドする必要があります。ファイルデータは通常のフォームデータとは別に扱われるため、フォームに <code class=\"docutils literal notranslate\">FileField</code> や <code class=\"docutils literal notranslate\">ImageField</code> が含まれている場合、フォームをバインドする際に第2引数を指定する必要があります。したがって、 <code class=\"docutils literal notranslate\">ImageField</code> を <code class=\"docutils literal notranslate\">mugshot</code> という名前で ContactForm に追加した場合、mugshot イメージを含むファイルデータをバインドする必要があります:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"go\"># Bound form with an image field</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.core.files.uploadedfile</span> <span class=\"kn\">import</span> SimpleUploadedFile\n<span class=\"gp\">&gt;&gt;&gt; </span>data <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;subject&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;hello&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Hi there&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;sender&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;foo@example.com&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;cc_myself&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>file_data <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;mugshot&quot;</span><span class=\"p\">:</span> SimpleUploadedFile<span class=\"p\">(</span><span class=\"s2\">&quot;face.jpg&quot;</span><span class=\"p\">,</span> <span class=\"sa\">b</span><span class=\"s2\">&quot;file data&quot;</span><span class=\"p\">)}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactFormWithMugshot<span class=\"p\">(</span>data<span class=\"p\">,</span> file_data<span class=\"p\">)</span>\n</code></pre></div>\n<p>実際には、通常、（フォームデータのソースとして <code class=\"docutils literal notranslate\">request.POST</code> を使用するのと同様に、）ファイルデータのソースとして <code class=\"docutils literal notranslate\">request.FILES</code> を指定します:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"go\"># Bound form with an image field, data from the request</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactFormWithMugshot<span class=\"p\">(</span>request<span class=\"o\">.</span>POST<span class=\"p\">,</span> request<span class=\"o\">.</span>FILES<span class=\"p\">)</span>\n</code></pre></div>\n<p>バインドされていないフォームを作成する方法は、いつも通りです。フォームデータ <em>と</em> ファイルデータの両方を省略します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"go\"># Unbound form with an image field</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactFormWithMugshot<span class=\"p\">()</span>\n</code></pre></div>\n<section id=\"testing-for-multipart-forms\">\n<h3>マルチパートフォームのテスト<a class=\"heading-anchor\" href=\"#testing-for-multipart-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.is_multipart\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">is_multipart</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.forms.Form.is_multipart\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>再利用可能なビューやテンプレートを書いている場合、フォームがマルチパートフォームかどうかを事前に知ることができないかもしれません。 <code class=\"docutils literal notranslate\">is_multipart()</code> メソッドは、フォームの送信にマルチパートエンコーディングが必要かどうかを教えてくれます:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactFormWithMugshot<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f<span class=\"o\">.</span>is_multipart<span class=\"p\">()</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>テンプレートでの使い方の例です:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">form.is_multipart</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">enctype</span><span class=\"o\">=</span><span class=\"s\">&quot;multipart/form-data&quot;</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span> <span class=\"na\">action</span><span class=\"o\">=</span><span class=\"s\">&quot;/foo/&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">else</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">form</span> <span class=\"na\">method</span><span class=\"o\">=</span><span class=\"s\">&quot;post&quot;</span> <span class=\"na\">action</span><span class=\"o\">=</span><span class=\"s\">&quot;/foo/&quot;</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{{</span> <span class=\"nv\">form</span> <span class=\"cp\">}}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">form</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"subclassing-forms\">\n<h2>フォームをサブクラス化する<a class=\"heading-anchor\" href=\"#subclassing-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>複数の <code class=\"docutils literal notranslate\">Form</code> クラスがフィールドを共有している場合、サブクラス化を利用して冗長性を排除できます。</p>\n<p>カスタム <code class=\"docutils literal notranslate\">Form</code> クラスをサブクラス化すると、親クラスのすべてのフィールドが含まれ、その後にサブクラスで定義したフィールドが続きます。</p>\n<p>この例では、<code class=\"docutils literal notranslate\">ContactFormWithPriority</code> は <code class=\"docutils literal notranslate\">ContactForm</code> の全てのフィールドに加え、追加のフィールド <code class=\"docutils literal notranslate\">priority</code> を含んでいます。<code class=\"docutils literal notranslate\">ContactForm</code> のフィールドが最初に配置されます:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">ContactFormWithPriority</span><span class=\"p\">(</span>ContactForm<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    priority <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>f <span class=\"o\">=</span> ContactFormWithPriority<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>f<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;Subject:&lt;input type=&quot;text&quot; name=&quot;subject&quot; maxlength=&quot;100&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Message:&lt;textarea name=&quot;message&quot; cols=&quot;40&quot; rows=&quot;10&quot; required&gt;&lt;/textarea&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Sender:&lt;input type=&quot;email&quot; name=&quot;sender&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Cc myself:&lt;input type=&quot;checkbox&quot; name=&quot;cc_myself&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Priority:&lt;input type=&quot;text&quot; name=&quot;priority&quot; required&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>複数のフォームをサブクラス化し、フォームをミックスインとして扱うことができます。この例では、<code class=\"docutils literal notranslate\">BeatleForm</code> が <code class=\"docutils literal notranslate\">PersonForm</code> と <code class=\"docutils literal notranslate\">InstrumentForm</code> （この順番で）の両方をサブクラス化し、そのフィールドリストは親クラスのフィールドを含んでいます:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">PersonForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    first_name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    last_name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">InstrumentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    instrument <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">BeatleForm</span><span class=\"p\">(</span>InstrumentForm<span class=\"p\">,</span> PersonForm<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    haircut_type <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> BeatleForm<span class=\"p\">(</span>auto_id<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>b<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;First name:&lt;input type=&quot;text&quot; name=&quot;first_name&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Last name:&lt;input type=&quot;text&quot; name=&quot;last_name&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Instrument:&lt;input type=&quot;text&quot; name=&quot;instrument&quot; required&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;Haircut type:&lt;input type=&quot;text&quot; name=&quot;haircut_type&quot; required&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>親クラスから継承された <code class=\"docutils literal notranslate\">Field</code> を、サブクラスでフィールドの名前を <code class=\"docutils literal notranslate\">None</code> に設定することで、宣言的にフィールドを削除できます。たとえば次のようにします:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django</span> <span class=\"kn\">import</span> forms\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">ParentForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> forms<span class=\"o\">.</span>CharField<span class=\"p\">()</span>\n<span class=\"gp\">... </span>    age <span class=\"o\">=</span> forms<span class=\"o\">.</span>IntegerField<span class=\"p\">()</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">ChildForm</span><span class=\"p\">(</span>ParentForm<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    name <span class=\"o\">=</span> <span class=\"kc\">None</span>\n<span class=\"gp\">...</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span>ChildForm<span class=\"p\">()</span><span class=\"o\">.</span>fields<span class=\"p\">)</span>\n<span class=\"go\">[&#39;age&#39;]</span>\n</code></pre></div>\n</section>\n<section id=\"prefixes-for-forms\">\n<span id=\"form-prefix\"></span><h2>フォームのプレフィックス<a class=\"heading-anchor\" href=\"#prefixes-for-forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.forms.Form.prefix\">\n<span class=\"sig-prename descclassname\">Form.</span><span class=\"sig-name descname\">prefix</span><a class=\"heading-anchor\" href=\"#django.forms.Form.prefix\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>1 つの <code class=\"docutils literal notranslate\">&lt;form&gt;</code> タグの中に複数の Django フォームを配置できます。各 <code class=\"docutils literal notranslate\">Form</code> に独自の名前空間を与えるには、<code class=\"docutils literal notranslate\">prefix</code> キーワード引数を使用します。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>mother <span class=\"o\">=</span> PersonForm<span class=\"p\">(</span>prefix<span class=\"o\">=</span><span class=\"s2\">&quot;mother&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>father <span class=\"o\">=</span> PersonForm<span class=\"p\">(</span>prefix<span class=\"o\">=</span><span class=\"s2\">&quot;father&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>mother<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_mother-first_name&quot;&gt;First name:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;mother-first_name&quot; required id=&quot;id_mother-first_name&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_mother-last_name&quot;&gt;Last name:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;mother-last_name&quot; required id=&quot;id_mother-last_name&quot;&gt;&lt;/div&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>father<span class=\"p\">)</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_father-first_name&quot;&gt;First name:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;father-first_name&quot; required id=&quot;id_father-first_name&quot;&gt;&lt;/div&gt;</span>\n<span class=\"go\">&lt;div&gt;&lt;label for=&quot;id_father-last_name&quot;&gt;Last name:&lt;/label&gt;&lt;input type=&quot;text&quot; name=&quot;father-last_name&quot; required id=&quot;id_father-last_name&quot;&gt;&lt;/div&gt;</span>\n</code></pre></div>\n<p>プレフィックスは、フォームクラスにも指定できます：</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">PersonForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    <span class=\"o\">...</span>\n<span class=\"gp\">... </span>    prefix <span class=\"o\">=</span> <span class=\"s2\">&quot;person&quot;</span>\n<span class=\"gp\">...</span>\n</code></pre></div>\n</section>","rootId":"module-django.forms","toc":[{"title":"バインドされた (bound) フォームとバインドされていない (unbound) フォーム","anchor":"bound-and-unbound-forms","children":[]},{"title":"フォームをデータの検証に使用する","anchor":"using-forms-to-validate-data","children":[{"title":"バインドされていないフォームの動作","anchor":"behavior-of-unbound-forms","children":[]}]},{"title":"フォームの初期値","anchor":"initial-form-values","children":[]},{"title":"どのフォームデータが変更されたかをチェックする","anchor":"checking-which-form-data-has-changed","children":[]},{"title":"フォームからフィールドにアクセスする","anchor":"accessing-the-fields-from-the-form","children":[]},{"title":"\"clean\" なデータにアクセスする","anchor":"accessing-clean-data","children":[]},{"title":"フォームをHTMLとしてアウトプットする","anchor":"outputting-forms-as-html","children":[{"title":"デフォルトのレンダリング","anchor":"default-rendering","children":[{"title":"template_name","anchor":"template-name","children":[]},{"title":"render()","anchor":"render","children":[]},{"title":"get_context()","anchor":"get-context","children":[]},{"title":"template_name_label","anchor":"template-name-label","children":[]}]},{"title":"出力スタイル","anchor":"output-styles","children":[{"title":"as_div()","anchor":"as-div","children":[]},{"title":"as_p()","anchor":"as-p","children":[]},{"title":"as_ul()","anchor":"as-ul","children":[]},{"title":"as_table()","anchor":"as-table","children":[]}]},{"title":"必須フォームとエラーのあるフォームのスタイリング","anchor":"styling-required-or-erroneous-form-rows","children":[]},{"title":"フォーム要素の HTML id 属性と <label> タグを設定する","anchor":"configuring-form-elements-html-id-attributes-and-label-tags","children":[]},{"title":"フォームウィジェットのレンダリングを設定する","anchor":"configuring-the-rendering-of-a-form-s-widgets","children":[]},{"title":"フィールドの順序に関する記述","anchor":"notes-on-field-ordering","children":[]},{"title":"エラーの表示方法","anchor":"how-errors-are-displayed","children":[]},{"title":"エラーリストのフォーマットをカスタムする","anchor":"customizing-the-error-list-format","children":[]}]},{"title":"さらに詳細なアウトプット","anchor":"more-granular-output","children":[{"title":"BoundField の属性一覧","anchor":"attributes-of-boundfield","children":[]},{"title":"BoundField のメソッド","anchor":"methods-of-boundfield","children":[]}]},{"title":"BoundField のカスタマイズ","anchor":"customizing-boundfield","children":[]},{"title":"アップロードされたファイルをフォームにバインドする","anchor":"binding-uploaded-files-to-a-form","children":[{"title":"マルチパートフォームのテスト","anchor":"testing-for-multipart-forms","children":[]}]},{"title":"フォームをサブクラス化する","anchor":"subclassing-forms","children":[]},{"title":"フォームのプレフィックス","anchor":"prefixes-for-forms","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/5.2/ref/"},{"docname":"ref/forms/index","title":"フォーム","url":"/ja/5.2/ref/forms/"}],"prev":{"docname":"ref/forms/index","title":"フォーム","url":"/ja/5.2/ref/forms/"},"next":{"docname":"ref/forms/fields","title":"フォーム フィールド","url":"/ja/5.2/ref/forms/fields/"},"formats":{"html":"/ja/5.2/ref/forms/api/","markdown":"/ja/5.2/ref/forms/api.md","json":"/ja/5.2/ref/forms/api.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/forms/api.txt","official":"https://docs.djangoproject.com/ja/5.2/ref/forms/api/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}