{"title":"GeoDjango フォーム API","version":"6.0","locale":"ja","docname":"ref/contrib/gis/forms-api","url":"/ja/6.0/ref/contrib/gis/forms-api/","canonical":"https://djangodocs.dev/ja/6.0/ref/contrib/gis/forms-api/","summary":"GeoDjango はジオローカライズされたデータを地図上に視覚的に表示・編集するために、いくつかの特殊なフォームフィールドとウィジェットを提供します。","html":"<span id=\"geodjango-forms-api\"></span><h1>GeoDjango フォーム API<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.forms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>GeoDjango はジオローカライズされたデータを地図上に視覚的に表示・編集するために、いくつかの特殊なフォームフィールドとウィジェットを提供します。デフォルトでは、 <a class=\"reference external\" href=\"https://www.earthdata.nasa.gov/\">NASA</a> が提供する WMS レイヤーをベースとした <a class=\"reference external\" href=\"https://openlayers.org/\">OpenLayers</a> を利用した地図を使います。</p>\n<section id=\"field-arguments\">\n<h2>フィールドの引数<a class=\"heading-anchor\" href=\"#field-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>通常の <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#core-field-arguments\"><span class=\"std std-ref\">フォームフィールドの引数</span></a> に加えて、 GeoDjango のフォームフィールドは以下のオプションの引数を取ります。</p>\n<section id=\"srid\">\n<h3><code class=\"docutils literal notranslate\">srid</code><a class=\"heading-anchor\" href=\"#srid\"><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.contrib.gis.forms.Field.srid\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">srid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.Field.srid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これはフィールドの値を変換するSRIDコードです。例えば、マップウィジェットのSRIDがアプリケーションやデータベースで一般的に使われるSRIDと異なる場合、フィールドは入力値を自動的にそのSRIDに変換します。</p>\n</dd></dl>\n\n</section>\n<section id=\"geom-type\">\n<h3><code class=\"docutils literal notranslate\">geom_type</code><a class=\"heading-anchor\" href=\"#geom-type\"><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.contrib.gis.forms.Field.geom_type\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">geom_type</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.Field.geom_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>通常、その属性を設定または変更する必要はありません。この属性はフィールドクラスに応じて設定されるべきです。これはOpenGIS標準のジオメトリ名に一致します。</p>\n</dd></dl>\n\n</section>\n<section id=\"max-geom-collections\">\n<h3><code class=\"docutils literal notranslate\">max_geom_collections</code><a class=\"heading-anchor\" href=\"#max-geom-collections\"><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.contrib.gis.forms.Field.max_geom_collections\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">max_geom_collections</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.Field.max_geom_collections\"><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.17\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2.17</p></aside>\n<p>The maximum number of geometry collections the field accepts before\nrefusing to parse the input and raising a\n<a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.core.exceptions.ValidationError\" title=\"django.core.exceptions.ValidationError\"><code class=\"xref py py-exc docutils literal notranslate\">ValidationError</code></a>. This guards against crashes\nin the underlying GEOS library when parsing deeply nested\n<code class=\"docutils literal notranslate\">GEOMETRYCOLLECTION</code> input. It defaults to <code class=\"docutils literal notranslate\">198</code>.</p>\n<p>The limit is applied differently depending on the input format: for\nwell-known text (WKT) it bounds the nesting <em>depth</em>, while for well-known\nbinary (WKB and hex-encoded WKB) it bounds the <em>total</em> number of geometry\ncollections (both breadth and depth). As a result, the same value may\naccept a wide, shallow collection as WKT but reject it as WKB. For GeoJSON,\nthe limit is not applied at all, since GDAL parses that input type instead.</p>\n<p>Increase this value (or set to <code class=\"docutils literal notranslate\">None</code>) only if you must accept\nlegitimately deep geometries, since doing so reduces protection against\nfatal errors.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"form-field-classes\">\n<h2>フォームフィールド クラス<a class=\"heading-anchor\" href=\"#form-field-classes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"geometryfield\">\n<h3><code class=\"docutils literal notranslate\">GeometryField</code><a class=\"heading-anchor\" href=\"#geometryfield\"><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.contrib.gis.forms.GeometryField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">GeometryField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.GeometryField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"pointfield\">\n<h3><code class=\"docutils literal notranslate\">PointField</code><a class=\"heading-anchor\" href=\"#pointfield\"><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.contrib.gis.forms.PointField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PointField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.PointField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"linestringfield\">\n<h3><code class=\"docutils literal notranslate\">LineStringField</code><a class=\"heading-anchor\" href=\"#linestringfield\"><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.contrib.gis.forms.LineStringField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LineStringField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.LineStringField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"polygonfield\">\n<h3><code class=\"docutils literal notranslate\">PolygonField</code><a class=\"heading-anchor\" href=\"#polygonfield\"><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.contrib.gis.forms.PolygonField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PolygonField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.PolygonField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"multipointfield\">\n<h3><code class=\"docutils literal notranslate\">MultiPointField</code><a class=\"heading-anchor\" href=\"#multipointfield\"><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.contrib.gis.forms.MultiPointField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MultiPointField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.MultiPointField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"multilinestringfield\">\n<h3><code class=\"docutils literal notranslate\">MultiLineStringField</code><a class=\"heading-anchor\" href=\"#multilinestringfield\"><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.contrib.gis.forms.MultiLineStringField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MultiLineStringField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.MultiLineStringField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"multipolygonfield\">\n<h3><code class=\"docutils literal notranslate\">MultiPolygonField</code><a class=\"heading-anchor\" href=\"#multipolygonfield\"><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.contrib.gis.forms.MultiPolygonField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MultiPolygonField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.MultiPolygonField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n<section id=\"geometrycollectionfield\">\n<h3><code class=\"docutils literal notranslate\">GeometryCollectionField</code><a class=\"heading-anchor\" href=\"#geometrycollectionfield\"><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.contrib.gis.forms.GeometryCollectionField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">GeometryCollectionField</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.GeometryCollectionField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</section>\n</section>\n<section id=\"module-django.contrib.gis.forms.widgets\">\n<span id=\"form-widgets\"></span><h2>フォームウィジェット<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.forms.widgets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>GeoDjango のフォームウィジェットを使うと、ビジュアルマップ上に地理情報を表示したり編集したりできます。現在利用可能なウィジェットはどれも 3D ジオメトリをサポートしていないので、 ジオメトリフィールドは <code class=\"docutils literal notranslate\">Textarea</code> ウィジェットを使ってフォールバックします。</p>\n<section id=\"widget-attributes\">\n<h3>ウィジェットの属性<a class=\"heading-anchor\" href=\"#widget-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>GeoDjango ウィジェットはテンプレートベースなので、その属性のほとんどは他の Django ウィジェットの属性と異なります。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.BaseGeometryWidget.base_layer\">\n<span class=\"sig-prename descclassname\">BaseGeometryWidget.</span><span class=\"sig-name descname\">base_layer</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.base_layer\"><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=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>対応する JavaScript のマップウィジェットで使用されるデフォルトのベースマップレイヤーの識別子を指定する文字列です。これはレンダリング時にウィジェットのオプションの一部として渡され、<code class=\"docutils literal notranslate\">MapWidget</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.contrib.gis.forms.widgets.BaseGeometryWidget.geom_type\">\n<span class=\"sig-prename descclassname\">BaseGeometryWidget.</span><span class=\"sig-name descname\">geom_type</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.geom_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>OpenGIS ジオメトリタイプ。通常、フォームフィールドによって設定されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.BaseGeometryWidget.map_srid\">\n<span class=\"sig-prename descclassname\">BaseGeometryWidget.</span><span class=\"sig-name descname\">map_srid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.map_srid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>地図で使用されるSRIDコード (デフォルトは4326)。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.BaseGeometryWidget.display_raw\">\n<span class=\"sig-prename descclassname\">BaseGeometryWidget.</span><span class=\"sig-name descname\">display_raw</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.display_raw\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>主にデバッグのために、現在のジオメトリのシリアライズされた表現を示すテキストエリア入力を表示するかどうかを指定するブール値 (デフォルトは <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.contrib.gis.forms.widgets.BaseGeometryWidget.supports_3d\">\n<span class=\"sig-prename descclassname\">BaseGeometryWidget.</span><span class=\"sig-name descname\">supports_3d</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.supports_3d\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ウィジェットが3Dデータの編集をサポートしているかどうかを示します (デフォルトは <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.contrib.gis.forms.widgets.BaseGeometryWidget.template_name\">\n<span class=\"sig-prename descclassname\">BaseGeometryWidget.</span><span class=\"sig-name descname\">template_name</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.template_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>地図ウィジェットのレンダリングに使用されるテンプレート。</p>\n</dd></dl>\n\n<p>ウィジェットの属性は、他のDjangoウィジェットと同じように渡すことができます。例えば、次のようにします:</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.contrib.gis</span> <span class=\"kn\">import</span> forms\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyGeoForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    point <span class=\"o\">=</span> forms<span class=\"o\">.</span>PointField<span class=\"p\">(</span>widget<span class=\"o\">=</span>forms<span class=\"o\">.</span>OSMWidget<span class=\"p\">(</span>attrs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;display_raw&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">}))</span>\n</code></pre></div>\n</section>\n<section id=\"widget-classes\">\n<h3>Widget クラス<a class=\"heading-anchor\" href=\"#widget-classes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\">BaseGeometryWidget</code></p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.BaseGeometryWidget\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BaseGeometryWidget</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これは、サブクラスが必要とするロジックを含む抽象ベースウィジェットです。このウィジェットを直接ジオメトリフィールドに使うことはできません。GeoDjango ウィジェットのレンダリングは <a class=\"reference internal\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.base_layer\" title=\"django.contrib.gis.forms.widgets.BaseGeometryWidget.base_layer\"><code class=\"xref py py-attr docutils literal notranslate\">base_layer</code></a> クラス属性で識別されるベースレイヤー名に基づいていることに注意してください。</p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">OpenLayersWidget</code></p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OpenLayersWidget\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">OpenLayersWidget</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これはすべての GeoDjango フォームフィールドで使用されるデフォルトウィジェットです。属性は以下の通りです。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OpenLayersWidget.base_layer\">\n<span class=\"sig-name descname\">base_layer</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget.base_layer\"><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=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p><code class=\"docutils literal notranslate\">nasaWorldview</code></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OpenLayersWidget.template_name\">\n<span class=\"sig-name descname\">template_name</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget.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\">gis/openlayers.html</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OpenLayersWidget.map_srid\">\n<span class=\"sig-name descname\">map_srid</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget.map_srid\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">3857</code></p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">OpenLayersWidget</code> および <a class=\"reference internal\" href=\"#django.contrib.gis.forms.widgets.OSMWidget\" title=\"django.contrib.gis.forms.widgets.OSMWidget\"><code class=\"xref py py-class docutils literal notranslate\">OSMWidget</code></a> は、コンテンツ配信ネットワーク <code class=\"docutils literal notranslate\">cdn.jsdelivr.net</code> 上でホストされている <code class=\"docutils literal notranslate\">ol.js</code> および <code class=\"docutils literal notranslate\">ol.css</code> ファイルを読み込みます。これらのファイルは、ウィジェットをサブクラス化し、内部の <code class=\"docutils literal notranslate\">Media</code> クラスの <code class=\"docutils literal notranslate\">js</code> および <code class=\"docutils literal notranslate\">css</code> プロパティを設定することで上書きできます（<a class=\"reference internal\" href=\"/ja/6.0/topics/forms/media/#assets-as-a-static-definition\"><span class=\"std std-ref\">定数として定義されたアセット</span></a> を参照）。</p>\n<aside class=\"admonition-external-assets-with-csp admonition\" role=\"note\">\n<p class=\"admonition-title\">CSP を適用する外部アセット</p>\n<p>When <a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.middleware.csp.ContentSecurityPolicyMiddleware\" title=\"django.middleware.csp.ContentSecurityPolicyMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">ContentSecurityPolicyMiddleware</code></a> is\nenabled, the default OpenLayers CDN assets (<code class=\"docutils literal notranslate\">ol.js</code> and <code class=\"docutils literal notranslate\">ol.css</code>)\nwill be blocked unless explicitly allowed. This can be addressed in one\nof two ways: <strong>serve assets locally</strong> by subclassing the widget and\nprovide local copies of the JavaScript and CSS files, or\n<strong>allow the CDN in the CSP policy</strong>.</p>\n<p>For example, to allow the default NASA Worldview base layer (replace\n<code class=\"docutils literal notranslate\">x.y.z</code> with the actual version):</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.utils.csp</span> <span class=\"kn\">import</span> CSP\n\nSECURE_CSP <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;default-src&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>CSP<span class=\"o\">.</span>SELF<span class=\"p\">],</span>\n    <span class=\"s2\">&quot;script-src&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>CSP<span class=\"o\">.</span>SELF<span class=\"p\">,</span> <span class=\"s2\">&quot;https://cdn.jsdelivr.net/npm/ol@x.y.z/dist/ol.js&quot;</span><span class=\"p\">],</span>\n    <span class=\"s2\">&quot;style-src&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>CSP<span class=\"o\">.</span>SELF<span class=\"p\">,</span> <span class=\"s2\">&quot;https://cdn.jsdelivr.net/npm/ol@x.y.z/ol.css&quot;</span><span class=\"p\">],</span>\n    <span class=\"s2\">&quot;img-src&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>CSP<span class=\"o\">.</span>SELF<span class=\"p\">,</span> <span class=\"s2\">&quot;https://*.earthdata.nasa.gov&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n</aside>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">OSMWidget</code></p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OSMWidget\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">OSMWidget</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>This widget specialized <a class=\"reference internal\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget\" title=\"django.contrib.gis.forms.widgets.OpenLayersWidget\"><code class=\"xref py py-class docutils literal notranslate\">OpenLayersWidget</code></a> and uses an OpenStreetMap\nbase layer to display geographic objects on. Attributes are:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OSMWidget.base_layer\">\n<span class=\"sig-name descname\">base_layer</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.base_layer\"><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=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p><code class=\"docutils literal notranslate\">osm</code></p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OSMWidget.default_lat\">\n<span class=\"sig-name descname\">default_lat</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.default_lat\"><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.contrib.gis.forms.widgets.OSMWidget.default_lon\">\n<span class=\"sig-name descname\">default_lon</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.default_lon\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトの中心緯度と経度はそれぞれ <code class=\"docutils literal notranslate\">47</code> と <code class=\"docutils literal notranslate\">5</code> で、フランス東部の位置です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.gis.forms.widgets.OSMWidget.default_zoom\">\n<span class=\"sig-name descname\">default_zoom</span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.default_zoom\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトの地図の縮尺は <code class=\"docutils literal notranslate\">12</code> です。</p>\n</dd></dl>\n\n<p>The <a class=\"reference internal\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget\" title=\"django.contrib.gis.forms.widgets.OpenLayersWidget\"><code class=\"xref py py-class docutils literal notranslate\">OpenLayersWidget</code></a> note about using external assets also applies\nhere. See also this <a class=\"reference external\" href=\"https://help.openstreetmap.org/questions/10920/how-to-embed-a-map-in-my-https-site\">FAQ answer</a> about <code class=\"docutils literal notranslate\">https</code> access to map tiles.</p>\n<aside class=\"admonition-openstreetmap-tiles-with-csp admonition\" role=\"note\">\n<p class=\"admonition-title\">OpenStreetMap tiles with CSP</p>\n<p>This widget uses OpenStreetMap tiles instead of NASA Worldview. If\n<a class=\"reference internal\" href=\"/ja/6.0/topics/security/#security-csp\"><span class=\"std std-ref\">Content Security Policy</span></a> enabled, both the OpenLayers CDN resources (as\nrequired by <a class=\"reference internal\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget\" title=\"django.contrib.gis.forms.widgets.OpenLayersWidget\"><code class=\"xref py py-class docutils literal notranslate\">OpenLayersWidget</code></a>) and the OpenStreetMap tile\nservers must be allowed:</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.utils.csp</span> <span class=\"kn\">import</span> CSP\n\nSECURE_CSP <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"c1\"># other directives</span>\n    <span class=\"s2\">&quot;img-src&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span>CSP<span class=\"o\">.</span>SELF<span class=\"p\">,</span> <span class=\"s2\">&quot;https://tile.openstreetmap.org&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n</aside>\n<aside class=\"version-note version-changed\" data-version=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.0</p><p>The <code class=\"docutils literal notranslate\">OSMWidget</code> no longer uses a custom template. Consequently, the\n<code class=\"docutils literal notranslate\">gis/openlayers-osm.html</code> template was removed.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"customizing-the-base-layer-used-in-openlayers-based-widgets\">\n<span id=\"geometry-widgets-customization\"></span><h3>Customizing the base layer used in OpenLayers-based widgets<a class=\"heading-anchor\" href=\"#customizing-the-base-layer-used-in-openlayers-based-widgets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"version-note version-added\" data-version=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>To customize the base layer displayed in OpenLayers-based geometry widgets,\ndefine a new layer builder in a custom JavaScript file. For example:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"javascript\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">path-to-file.js</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">JavaScript</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=\"JavaScript code\"><code> <span class=\"nx\">MapWidget</span><span class=\"p\">.</span><span class=\"nx\">layerBuilder</span><span class=\"p\">.</span><span class=\"nx\">custom_layer_name</span> <span class=\"o\">=</span> <span class=\"kd\">function</span> <span class=\"p\">()</span> <span class=\"p\">{</span>\n     <span class=\"c1\">// Return an OpenLayers layer instance.</span>\n     <span class=\"k\">return</span> <span class=\"ow\">new</span> <span class=\"nx\">ol</span><span class=\"p\">.</span><span class=\"nx\">layer</span><span class=\"p\">.</span><span class=\"nx\">Tile</span><span class=\"p\">({</span><span class=\"nx\">source</span><span class=\"o\">:</span> <span class=\"ow\">new</span> <span class=\"nx\">ol</span><span class=\"p\">.</span><span class=\"nx\">source</span><span class=\"p\">.</span><span class=\"o\">&lt;</span><span class=\"nx\">ChosenSource</span><span class=\"o\">&gt;</span><span class=\"p\">()});</span>\n <span class=\"p\">};</span>\n</code></pre></figure>\n<p>Then, subclass a standard geometry widget and set the <code class=\"docutils literal notranslate\">base_layer</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.contrib.gis.forms.widgets</span> <span class=\"kn\">import</span> OpenLayersWidget\n\n\n<span class=\"k\">class</span> <span class=\"nc\">YourCustomWidget</span><span class=\"p\">(</span>OpenLayersWidget<span class=\"p\">):</span>\n    base_layer <span class=\"o\">=</span> <span class=\"s2\">&quot;custom_layer_name&quot;</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Media</span><span class=\"p\">:</span>\n        js <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;path-to-file.js&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</section>\n</section>","rootId":"module-django.contrib.gis.forms","toc":[{"title":"フィールドの引数","anchor":"field-arguments","children":[{"title":"srid","anchor":"srid","children":[]},{"title":"geom_type","anchor":"geom-type","children":[]},{"title":"max_geom_collections","anchor":"max-geom-collections","children":[]}]},{"title":"フォームフィールド クラス","anchor":"form-field-classes","children":[{"title":"GeometryField","anchor":"geometryfield","children":[]},{"title":"PointField","anchor":"pointfield","children":[]},{"title":"LineStringField","anchor":"linestringfield","children":[]},{"title":"PolygonField","anchor":"polygonfield","children":[]},{"title":"MultiPointField","anchor":"multipointfield","children":[]},{"title":"MultiLineStringField","anchor":"multilinestringfield","children":[]},{"title":"MultiPolygonField","anchor":"multipolygonfield","children":[]},{"title":"GeometryCollectionField","anchor":"geometrycollectionfield","children":[]}]},{"title":"フォームウィジェット","anchor":"module-django.contrib.gis.forms.widgets","children":[{"title":"ウィジェットの属性","anchor":"widget-attributes","children":[]},{"title":"Widget クラス","anchor":"widget-classes","children":[]},{"title":"Customizing the base layer used in OpenLayers-based widgets","anchor":"customizing-the-base-layer-used-in-openlayers-based-widgets","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/6.0/ref/"},{"docname":"ref/contrib/index","title":"contrib パッケージ","url":"/ja/6.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/ja/6.0/ref/contrib/gis/"}],"prev":{"docname":"ref/contrib/gis/db-api","title":"GeoDjango データベース API","url":"/ja/6.0/ref/contrib/gis/db-api/"},"next":{"docname":"ref/contrib/gis/geoquerysets","title":"GIS QuerySet API リファレンス","url":"/ja/6.0/ref/contrib/gis/geoquerysets/"},"formats":{"html":"/ja/6.0/ref/contrib/gis/forms-api/","markdown":"/ja/6.0/ref/contrib/gis/forms-api.md","json":"/ja/6.0/ref/contrib/gis/forms-api.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/contrib/gis/forms-api.txt","official":"https://docs.djangoproject.com/ja/6.0/ref/contrib/gis/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"]}