{"title":"API des formulaires GeoDjango","version":"6.0","locale":"fr","docname":"ref/contrib/gis/forms-api","url":"/fr/6.0/ref/contrib/gis/forms-api/","canonical":"https://djangodocs.dev/fr/6.0/ref/contrib/gis/forms-api/","summary":"GeoDjango propose quelques champs et composants de formulaires spécialisés afin d’afficher et de modifier visuellement des données géolocalisées sur une carte. Par…","html":"<span id=\"geodjango-forms-api\"></span><h1>API des formulaires GeoDjango<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.forms\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>GeoDjango propose quelques champs et composants de formulaires spécialisés afin d’afficher et de modifier visuellement des données géolocalisées sur une carte. Par défaut, ils utilisent des cartes motorisées par <a class=\"reference external\" href=\"https://openlayers.org/\">OpenLayers</a>, avec une couche de base WMS fournie par la <a class=\"reference external\" href=\"https://www.earthdata.nasa.gov/\">NASA</a>.</p>\n<section id=\"field-arguments\">\n<h2>Paramètres de champs<a class=\"heading-anchor\" href=\"#field-arguments\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>En plus des <a class=\"reference internal\" href=\"/fr/6.0/ref/forms/fields/#core-field-arguments\"><span class=\"std std-ref\">paramètres de champs de formulaires</span></a> habituels, les champs de formulaires GeoDjango acceptent les paramètres facultatifs suivants.</p>\n<section id=\"srid\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">srid</span></code><a class=\"heading-anchor\" href=\"#srid\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">srid</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.Field.srid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Il s’agit du code SRID utilisé pour transformer la valeur du champ. Par exemple, si le SRID du composant de carte est différent du SRID utilisé plus généralement par votre application ou base de données, le champ convertit automatiquement les valeurs d’entrée dans ce SRID.</p>\n</dd></dl>\n\n</section>\n<section id=\"geom-type\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">geom_type</span></code><a class=\"heading-anchor\" href=\"#geom-type\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">geom_type</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.Field.geom_type\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Cet attribut n’a généralement pas besoin d’être défini ou modifié, car il est automatiquement défini en fonction de la classe du champ. Il correspond au nom d’objet géométrique du standard OpenGIS.</p>\n</dd></dl>\n\n</section>\n<section id=\"max-geom-collections\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">max_geom_collections</span></code><a class=\"heading-anchor\" href=\"#max-geom-collections\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">Field.</span></span><span class=\"sig-name descname\"><span class=\"pre\">max_geom_collections</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.Field.max_geom_collections\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"5.2.17\">\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=\"/fr/6.0/ref/exceptions/#django.core.exceptions.ValidationError\" title=\"django.core.exceptions.ValidationError\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ValidationError</span></code></a>. This guards against crashes\nin the underlying GEOS library when parsing deeply nested\n<code class=\"docutils literal notranslate\"><span class=\"pre\">GEOMETRYCOLLECTION</span></code> input. It defaults to <code class=\"docutils literal notranslate\"><span class=\"pre\">198</span></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\"><span class=\"pre\">None</span></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>Classes de champs de formulaires<a class=\"heading-anchor\" href=\"#form-field-classes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"geometryfield\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">GeometryField</span></code><a class=\"heading-anchor\" href=\"#geometryfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">GeometryField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.GeometryField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">PointField</span></code><a class=\"heading-anchor\" href=\"#pointfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">PointField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.PointField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">LineStringField</span></code><a class=\"heading-anchor\" href=\"#linestringfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">LineStringField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.LineStringField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">PolygonField</span></code><a class=\"heading-anchor\" href=\"#polygonfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">PolygonField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.PolygonField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">MultiPointField</span></code><a class=\"heading-anchor\" href=\"#multipointfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiPointField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.MultiPointField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">MultiLineStringField</span></code><a class=\"heading-anchor\" href=\"#multilinestringfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiLineStringField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.MultiLineStringField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">MultiPolygonField</span></code><a class=\"heading-anchor\" href=\"#multipolygonfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">MultiPolygonField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.MultiPolygonField\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">GeometryCollectionField</span></code><a class=\"heading-anchor\" href=\"#geometrycollectionfield\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">GeometryCollectionField</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.GeometryCollectionField\"><span class=\"visually-hidden\">Lien vers cette définition</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>Composants de formulaires<a class=\"heading-anchor\" href=\"#module-django.contrib.gis.forms.widgets\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Les composants de formulaires GeoDjango permettent d’afficher et de modifier des données géographiques visuellement sur une carte. Notez qu’aucun des composants actuellement disponibles ne prend en charge les objets géométriques 3D, ce qui fait que les champs géométriques se rabattent sur un composant <code class=\"docutils literal notranslate\"><span class=\"pre\">Textarea</span></code> s’ils ont affaire à de tels objets.</p>\n<section id=\"widget-attributes\">\n<h3>Attributs de composants<a class=\"heading-anchor\" href=\"#widget-attributes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les composants GeoDjango sont basés sur les gabarits, ce qui fait que leurs attributs sont majoritairement différents des autres attributs de composants 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\"><span class=\"pre\">BaseGeometryWidget.</span></span><span class=\"sig-name descname\"><span class=\"pre\">base_layer</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.base_layer\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>Une chaîne indiquant l’identifiant de la couche cartographique de base par défaut à utiliser par le composant de carte JavaScript correspondant. Elle est transmise dans les options du composant au moment du rendu, permettant à <code class=\"docutils literal notranslate\"><span class=\"pre\">MapWidget</span></code> de déterminer quel fournisseur de tuiles de carte ou de couche de base à initialiser (vaut <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> par défaut).</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\"><span class=\"pre\">BaseGeometryWidget.</span></span><span class=\"sig-name descname\"><span class=\"pre\">geom_type</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.geom_type\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le type de géométrie OpenGIS, généralement défini par le champ de formulaire.</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\"><span class=\"pre\">BaseGeometryWidget.</span></span><span class=\"sig-name descname\"><span class=\"pre\">map_srid</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.map_srid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Code SRID utilisé par la carte (la valeur par défaut est 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\"><span class=\"pre\">BaseGeometryWidget.</span></span><span class=\"sig-name descname\"><span class=\"pre\">display_raw</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.display_raw\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valeur booléenne indiquant si une boîte de saisie de texte affichant la représentation sérialisée de l’objet géométrique en cours est visible, principalement à des fins de débogage (la valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">BaseGeometryWidget.</span></span><span class=\"sig-name descname\"><span class=\"pre\">supports_3d</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.supports_3d\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Indique si le composant prend en charge l’édition de données 3D (la valeur par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></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\"><span class=\"pre\">BaseGeometryWidget.</span></span><span class=\"sig-name descname\"><span class=\"pre\">template_name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget.template_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le gabarit utilisé pour produire le composant de carte.</p>\n</dd></dl>\n\n<p>Vous pouvez transmettre des attributs de composants de la même façon que pour tout autre composant Django. Par exemple :</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=\"w\"> </span><span class=\"nn\">django.contrib.gis</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyGeoForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">Form</span><span class=\"p\">):</span>\n    <span class=\"n\">point</span> <span class=\"o\">=</span> <span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">PointField</span><span class=\"p\">(</span><span class=\"n\">widget</span><span class=\"o\">=</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">OSMWidget</span><span class=\"p\">(</span><span class=\"n\">attrs</span><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>Classes de composants<a class=\"heading-anchor\" href=\"#widget-classes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">BaseGeometryWidget</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BaseGeometryWidget</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.BaseGeometryWidget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Il s’agit d’un composant de base abstrait contenant la logique nécessaire aux sous-classes. Il n’est pas possible d’utiliser directement ce composant pour un champ géométrique. Notez que la production de composants GeoDjango est basée sur un nom de couche de base, identifié par l’attribut de classe <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\"><span class=\"pre\">base_layer</span></code></a>.</p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">OpenLayersWidget</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">OpenLayersWidget</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Il s’agit du composant par défaut utilisé par tous les champs de formulaires GeoDjango. Ses attributs sont :</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\"><span class=\"pre\">base_layer</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget.base_layer\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">nasaWorldview</span></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\"><span class=\"pre\">template_name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget.template_name\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">gis/openlayers.html</span></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\"><span class=\"pre\">map_srid</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OpenLayersWidget.map_srid\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">3857</span></code></p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">OpenLayersWidget</span></code> et <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\"><span class=\"pre\">OSMWidget</span></code></a> incluent les fichiers <code class=\"docutils literal notranslate\"><span class=\"pre\">ol.js</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">ol.css</span></code> hébergés sur le réseau de diffusion de contenu <code class=\"docutils literal notranslate\"><span class=\"pre\">cdn.jsdelivr.net</span></code>. Ces fichiers peuvent être surchargés en créant une sous-classe du composant et en définissant les propriétés <code class=\"docutils literal notranslate\"><span class=\"pre\">js</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">css</span></code> de la classe <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> interne (voir <a class=\"reference internal\" href=\"/fr/6.0/topics/forms/media/#assets-as-a-static-definition\"><span class=\"std std-ref\">Fichiers annexes définis statiquement</span></a>).</p>\n<aside class=\"admonition-external-assets-with-csp admonition\">\n<p class=\"admonition-title\">Fichiers statiques externes avec CSP</p>\n<p>Lorsque <a class=\"reference internal\" href=\"/fr/6.0/ref/middleware/#django.middleware.csp.ContentSecurityPolicyMiddleware\" title=\"django.middleware.csp.ContentSecurityPolicyMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ContentSecurityPolicyMiddleware</span></code></a> est activé, les fichiers externes par défaut du CDN OpenLayers (<code class=\"docutils literal notranslate\"><span class=\"pre\">ol.js</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">ol.css</span></code>) seront bloqués, sauf si une clause spécifique les autorise. Cela peut être corrigé de deux manières : <strong>servir ces fichiers localement</strong> en créant une sous-classe du composant et en indiquant des copies locales des fichier JavaScript et CSS, ou <strong>autoriser le CDN dans la politique CSP</strong>.</p>\n<p>Par exemple, pour autoriser la couche de base par défaut « NASA Worldview » (remplacez <code class=\"docutils literal notranslate\"><span class=\"pre\">x.y.z</span></code> par la version actuelle) :</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=\"w\"> </span><span class=\"nn\">django.utils.csp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CSP</span>\n\n<span class=\"n\">SECURE_CSP</span> <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><span class=\"n\">CSP</span><span class=\"o\">.</span><span class=\"n\">SELF</span><span class=\"p\">],</span>\n    <span class=\"s2\">&quot;script-src&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"n\">CSP</span><span class=\"o\">.</span><span class=\"n\">SELF</span><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><span class=\"n\">CSP</span><span class=\"o\">.</span><span class=\"n\">SELF</span><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><span class=\"n\">CSP</span><span class=\"o\">.</span><span class=\"n\">SELF</span><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\"><span class=\"pre\">OSMWidget</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">OSMWidget</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ce composant spécialise <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\"><span class=\"pre\">OpenLayersWidget</span></code></a> en utilisant une couche de base OpenStreetMap pour afficher les objets géographiques. Ses attributs sont :</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\"><span class=\"pre\">base_layer</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.base_layer\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">osm</span></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\"><span class=\"pre\">default_lat</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.default_lat\"><span class=\"visually-hidden\">Lien vers cette définition</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\"><span class=\"pre\">default_lon</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.default_lon\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Les latitude et longitude du centre sont respectivement <code class=\"docutils literal notranslate\"><span class=\"pre\">47</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">5</span></code> par défaut, ce qui correspond à un emplacement à l’est de la France.</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\"><span class=\"pre\">default_zoom</span></span><a class=\"heading-anchor\" href=\"#django.contrib.gis.forms.widgets.OSMWidget.default_zoom\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Le zoom de carte par défaut est <code class=\"docutils literal notranslate\"><span class=\"pre\">12</span></code>.</p>\n</dd></dl>\n\n<p>La note <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\"><span class=\"pre\">OpenLayersWidget</span></code></a> au sujet des fichiers statiques externes est aussi valable dans ce cas. Voir aussi cette <a class=\"reference external\" href=\"https://help.openstreetmap.org/questions/10920/how-to-embed-a-map-in-my-https-site\">réponse de FAQ</a> au sujet de l’accès <code class=\"docutils literal notranslate\"><span class=\"pre\">https</span></code> aux tuiles de cartes.</p>\n<aside class=\"admonition-openstreetmap-tiles-with-csp admonition\">\n<p class=\"admonition-title\">Tuiles OpenStreetMap et CSP</p>\n<p>Ce composant utilise des tuiles OpenStreetMap au lieu de la couche NASA Worldview. Si <a class=\"reference internal\" href=\"/fr/6.0/topics/security/#security-csp\"><span class=\"std std-ref\">Politique de sécurité de contenu (CSP)</span></a> est activé, il est nécessaire d’autoriser à la fois les ressources CDN OpenLayers (tels que requis par <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\"><span class=\"pre\">OpenLayersWidget</span></code></a>) et les serveurs de tuiles OpenStreetMap :</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=\"w\"> </span><span class=\"nn\">django.utils.csp</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CSP</span>\n\n<span class=\"n\">SECURE_CSP</span> <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><span class=\"n\">CSP</span><span class=\"o\">.</span><span class=\"n\">SELF</span><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\">\n<p class=\"version-note-title\">Changed in Django 6.0</p><p>Le composant <code class=\"docutils literal notranslate\"><span class=\"pre\">OSMWidget</span></code> n’utilise plus de gabarit personnalisé. Par conséquent, le gabarit <code class=\"docutils literal notranslate\"><span class=\"pre\">gis/openlayers-osm.html</span></code> a été supprimé.</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>Personnalisation de la couche de base utilisée dans les composants basés sur OpenLayers<a class=\"heading-anchor\" href=\"#customizing-the-base-layer-used-in-openlayers-based-widgets\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"version-note version-added\" data-version=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>Pour personnaliser la couche de base affichée dans les composants géométriques basés sur OpenLayers, définissez un nouveau constructeur de couche dans un fichier JavaScript personnalisé. Par exemple :</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"javascript\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">chemin-vers-fichier.js</span></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=\"w\"> </span><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=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kd\">function</span><span class=\"w\"> </span><span class=\"p\">()</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">     </span><span class=\"c1\">// Return an OpenLayers layer instance.</span>\n<span class=\"w\">     </span><span class=\"k\">return</span><span class=\"w\"> </span><span class=\"ow\">new</span><span class=\"w\"> </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=\"w\"> </span><span class=\"ow\">new</span><span class=\"w\"> </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=\"w\"> </span><span class=\"p\">};</span>\n</code></pre></figure>\n<p>Puis, créez une sous-classe du composant géométrique standard et définissez l’attribut <code class=\"docutils literal notranslate\"><span class=\"pre\">base_layer</span></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=\"w\"> </span><span class=\"nn\">django.contrib.gis.forms.widgets</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">OpenLayersWidget</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">YourCustomWidget</span><span class=\"p\">(</span><span class=\"n\">OpenLayersWidget</span><span class=\"p\">):</span>\n    <span class=\"n\">base_layer</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;custom_layer_name&quot;</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n        <span class=\"n\">js</span> <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":"Paramètres de champs","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":"Classes de champs de formulaires","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":"Composants de formulaires","anchor":"module-django.contrib.gis.forms.widgets","children":[{"title":"Attributs de composants","anchor":"widget-attributes","children":[]},{"title":"Classes de composants","anchor":"widget-classes","children":[]},{"title":"Personnalisation de la couche de base utilisée dans les composants basés sur OpenLayers","anchor":"customizing-the-base-layer-used-in-openlayers-based-widgets","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/6.0/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/6.0/ref/contrib/"},{"docname":"ref/contrib/gis/index","title":"GeoDjango","url":"/fr/6.0/ref/contrib/gis/"}],"prev":{"docname":"ref/contrib/gis/db-api","title":"API de base de données GeoDjango","url":"/fr/6.0/ref/contrib/gis/db-api/"},"next":{"docname":"ref/contrib/gis/geoquerysets","title":"Référence des API QuerySet GIS","url":"/fr/6.0/ref/contrib/gis/geoquerysets/"},"formats":{"html":"/fr/6.0/ref/contrib/gis/forms-api/","markdown":"/fr/6.0/ref/contrib/gis/forms-api.md","json":"/fr/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/fr/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"]}