GeoDjango Forms API
GeoDjango предоставляет некоторые специализированные поля и виджеты форм для визуального отображения и редактирования геолокационных данных на карте. По умолчанию они используют карты на основе OpenLayers, с базовым слоем WMS, предоставленным NASA.
Аргументы поля
В дополнение к стандартным аргументам полей формы, поля форм GeoDjango принимают следующие необязательные аргументы.
srid
-
Field.srid -
Это код SRID, к которому должно быть преобразовано значение поля. Например, если SRID виджета карты отличается от SRID, обычно используемого вашим приложением или базой данных, поле автоматически преобразует входные значения в этот SRID.
geom_type
-
Field.geom_type -
Обычно вам не нужно устанавливать или изменять этот атрибут, который должен быть установлен в зависимости от класса поля. Он соответствует стандартному имени геометрии OpenGIS.
Классы полей формы
GeometryField
-
class GeometryField[source]
PointField
-
class PointField[source]
LineStringField
-
class LineStringField[source]
PolygonField
-
class PolygonField[source]
MultiPointField
-
class MultiPointField[source]
MultiLineStringField
-
class MultiLineStringField[source]
MultiPolygonField
-
class MultiPolygonField[source]
GeometryCollectionField
-
class GeometryCollectionField[source]
Виджеты форм
Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных виджетов в настоящее время не поддерживает 3D-геометрии, поэтому поля геометрии будут использовать виджет Textarea для таких данных.
Атрибуты виджета
Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от атрибутов других виджетов Django.
-
BaseGeometryWidget.geom_type -
Тип геометрии OpenGIS, обычно устанавливаемый полем формы.
-
BaseGeometryWidget.map_srid -
Код SRID, используемый картой (по умолчанию 4326).
-
BaseGeometryWidget.display_raw -
Булево значение, указывающее, виден ли текстовый ввод, отображающий сериализованное представление текущей геометрии, в основном для отладки (по умолчанию
False).
-
BaseGeometryWidget.supports_3d -
Указывает, поддерживает ли виджет редактирование 3D-данных (по умолчанию
False).
-
BaseGeometryWidget.template_name -
Шаблон, используемый для рендеринга виджета карты.
Вы можете передавать атрибуты виджета таким же образом, как и для любого другого виджета Django. Например:
from django.contrib.gis import forms
class MyGeoForm(forms.Form):
point = forms.PointField(widget=forms.OSMWidget(attrs={"display_raw": True}))
Классы виджетов
BaseGeometryWidget
-
class BaseGeometryWidget[source] -
Это абстрактный базовый виджет, содержащий логику, необходимую подклассам. Вы не можете напрямую использовать этот виджет для поля геометрии. Обратите внимание, что рендеринг виджетов GeoDjango основан на шаблоне, определенном атрибутом класса
template_name.
OpenLayersWidget
-
class OpenLayersWidget[source] -
Это виджет по умолчанию, используемый всеми полями форм GeoDjango.
template_nameявляетсяgis/openlayers.html.OpenLayersWidgetиOSMWidgetиспользуют файлol.js, размещенный на сети доставки контентаcdn.jsdelivr.net. Вы можете подклассифицировать эти виджеты, чтобы указать собственную версию файлаol.jsв свойствеjsвнутреннего классаMedia(см. Аксессуары как статическое определение).
OSMWidget
-
class OSMWidget[source] -
Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:
-
template_name -
gis/openlayers-osm.html
-
default_lat
-
default_lon -
По умолчанию широта и долгота центра —
47и5, соответственно, что является местоположением во Франции.
-
default_zoom -
По умолчанию масштаб карты —
12.
Примечание
OpenLayersWidgetвыше также относится и сюда. Также см. этот ответ на часто задаваемый вопрос о доступе к тайлам картыhttps. -
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.1/ref/contrib/gis/forms-api/