API форм GeoDjango
GeoDjango предоставляет специализированные поля и виджеты форм для визуального отображения и редактирования геолокализованных данных на карте. По умолчанию они используют карты на основе OpenLayers с базовым слоем WMS, предоставленным NASA.
Аргументы полей
Помимо стандартных аргументов полей форм, поля форм GeoDjango принимают следующие необязательные аргументы.
srid
-
Field.srid -
Это код SRID, к которому должно быть преобразовано значение поля. Например, если SRID виджета карты отличается от SRID, используемого вашей приложением или базой данных, поле автоматически преобразует входные значения в этот SRID.
geom_type
-
Field.geom_type -
В общем случае вам не нужно устанавливать или изменять этот атрибут, который должен быть задан в зависимости от класса поля. Он соответствует стандартному имени геометрии OpenGIS.
Классы полей форм
GeometryField
-
class GeometryField
PointField
-
class PointField
LineStringField
-
class LineStringField
PolygonField
-
class PolygonField
MultiPointField
-
class MultiPointField
MultiLineStringField
-
class MultiLineStringField
MultiPolygonField
-
class MultiPolygonField
GeometryCollectionField
-
class GeometryCollectionField
Виджеты форм
Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных в настоящее время виджетов не поддерживает 3D-геометрии, поэтому поля геометрии будут использовать виджет Textarea для таких данных.
Атрибуты виджетов
Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от атрибутов других виджетов Django.
-
BaseGeometryWidget.geom_type -
Тип геометрии OpenGIS, обычно устанавливается полем формы.
-
BaseGeometryWidget.map_height
-
BaseGeometryWidget.map_width -
Высота и ширина карты виджета (по умолчанию 400x600).
Устарело начиная с версии 4.2:
map_heightиmap_widthатрибуты устарели. Используйте CSS для изменения размеров виджетов карт.
-
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 -
Это абстрактный базовый виджет, содержащий логику, необходимую для подклассов. Вы не можете напрямую использовать этот виджет для поля геометрии. Обратите внимание, что рендеринг виджетов GeoDjango основан на шаблоне, идентифицированном атрибутом класса
template_name.
OpenLayersWidget
-
class OpenLayersWidget -
Это виджет по умолчанию, используемый всеми полями форм GeoDjango.
template_namegis/openlayers.html.OpenLayersWidgetиOSMWidgetиспользуют файлol.js, размещённый наcdn.jsdelivr.netсети доставки контента. Вы можете наследовать эти виджеты, чтобы указать свою собственную версию файлаol.jsв свойствеjsвнутреннего классаMedia(см. Активы как статическое определение).
OSMWidget
-
class OSMWidget -
Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:
-
template_name -
gis/openlayers-osm.html
-
default_lat
-
default_lon -
Центральные значения широты и долготы по умолчанию составляют
47и5, соответственно, что соответствует расположению во Франции.
-
default_zoom -
Значение масштаба карты по умолчанию составляет
12.
Примечание о размещении файлов JavaScript, указанное выше для
OpenLayersWidget, также применимо здесь. См. также этот ответ на вопрос FAQ о доступе к тайлам картыhttps. -
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.0/ref/contrib/gis/forms-api/