API des formulaires GeoDjango¶
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 OpenLayers, avec une couche de base WMS fournie par Metacarta.
Paramètres de champs¶
En plus des paramètres de champs de formulaires habituels, les champs de formulaires GeoDjango acceptent les paramètres facultatifs suivants.
Classes de champs de formulaires¶
Composants de formulaires¶
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 simple composant Textarea
s’ils ont affaire à de tels objets.
Attributs de composants¶
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.
-
BaseGeometryWidget.
geom_type
¶ Le type de géométrie OpenGIS, généralement défini par le champ de formulaire.
-
BaseGeometryWidget.
map_height
¶
-
BaseGeometryWidget.
map_width
¶ Hauteur et largeur du composant de carte (la valeur par défaut est 400x600).
-
BaseGeometryWidget.
map_srid
¶ Code SRID utilisé par la carte (la valeur par défaut est 4326).
-
BaseGeometryWidget.
display_raw
¶ 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
False
).
-
BaseGeometryWidget.
supports_3d
¶ Indique si le composant prend en charge l’édition de données 3D (la valeur par défaut est
False
).
-
BaseGeometryWidget.
template_name
¶ Le gabarit utilisé pour produire le composant de carte.
Vous pouvez transmettre des attributs de composants de la même façon que pour tout autre composant Django. Par exemple :
from django.contrib.gis import forms
class MyGeoForm(forms.Form):
point = forms.PointField(widget=
forms.OSMWidget(attrs={'map_width': 800, 'map_height': 500}))
Classes de composants¶
BaseGeometryWidget
-
class
BaseGeometryWidget
¶ 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 les gabarits, par l’intermédiaire de l’attribut de classe
template_name
.
OpenLayersWidget
-
class
OpenLayersWidget
¶ Il s’agit du composant par défaut utilisé par tous les champs de formulaires GeoDjango.
template_name
contientgis/openlayers.html
.OpenLayersWidget
etOSMWidget
utilisent le fichieropenlayers.js
hébergé sur le site Webopenlayers.org
. Cela fonctionne pour un usage simple pendant le développement, mais ne convient pas pour un déploiement en production caropenlayers.org/api/
n’offre aucune garantie de disponibilité et se trouve sur un serveur lent. Il est donc fortement recommandé de créer des sous-classes de ces composants afin d’y indiquer votre propre emplacement du fichieropenlayers.js
dans la propriétéjs
de la classeMedia
interne (voir Fichiers annexes définis statiquement). Vous pouvez héberger une copie deopenlayers.js
adaptée à vos besoins sur votre propre serveur, ou vous référer à une copie sur un réseau de service de contenus (CDN) comme https://cdnjs.com/. Cela permet également de servir les fichiers JavaScript en utilisant le protocolehttps
lorsque c’est nécessaire.
OSMWidget
-
class
OSMWidget
¶ Ce composant utilise une couche de base OpenStreetMap (Mapnik) comme base d’affichage pour les objets géographiques.
template_name
contientgis/openlayers-osm.html
.La note
OpenLayersWidget
au sujet de l’hébergement des fichiers JavaScript est aussi valable dans ce cas. Voir aussi cette réponse de FAQ au sujet de l’accèshttps
aux tuiles de cartes.