• 3.1
  • 5.0
  • 6.1
  • Версия документации: 3.2

API форм GeoDjango

GeoDjango предоставляет несколько специализированных полей форм и виджетов для визуального отображения и редактирования геолокализованных данных на карте. По умолчанию они используют карты на базе OpenLayers, а базовый слой WMS предоставлен NASA.

Аргументы поля

В дополнение к обычным аргументам полей формы, поля формы GeoDjango принимают следующие необязательные аргументы.

срид

Field.srid

Это код SRID, в который должно быть преобразовано значение поля. Например, если SRID виджета карты отличается от SRID, обычно используемого вашим приложением или базой данных, поле автоматически преобразует входные значения в этот SRID.

geom_type

Field.geom_type

You generally shouldn’t have to set or change that attribute which should be setup depending on the field class. It matches the OpenGIS standard geometry name.

Классы полей формы

Поле Геометрии

class GeometryField

PointField

class PointField

LineStringField

class LineStringField

ПолигонФилд

class PolygonField

МультиПоинтфилд

class MultiPointField

MultiLineStringField

class MultiLineStringField

Мультиполигонфилд

class MultiPolygonField

GeometryCollectionField

class GeometryCollectionField

Виджеты форм

Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных на данный момент виджетов не поддерживает 3D-геометрию, поэтому поля геометрии будут использовать виджет Textarea для таких данных.

Атрибуты виджета

Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от других атрибутов виджетов Django.

BaseGeometryWidget.geom_type

Тип геометрии OpenGIS, обычно задаваемый полем формы.

BaseGeometryWidget.map_height
BaseGeometryWidget.map_width

Height and width of the widget map (default is 400x600).

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={'map_width': 800, 'map_height': 500}))

Классы виджетов

BaseGeometryWidget

class BaseGeometryWidget

Это абстрактный базовый виджет, содержащий логику, необходимую для подклассов. Вы не можете напрямую использовать этот виджет для геометрического поля. Обратите внимание, что рендеринг виджетов GeoDjango основан на шаблоне, определяемом атрибутом класса template_name.

OpenLayersWidget

class OpenLayersWidget

Это виджет по умолчанию, используемый всеми полями формы GeoDjango. template_namegis/openlayers.html.

OpenLayersWidget and OSMWidget use the openlayers.js file hosted on the cdnjs.cloudflare.com content-delivery network. You can subclass these widgets in order to specify your own version of the OpenLayers.js file in the js property of the inner Media class (see Определение статических файлов).

OSMWidget

class OSMWidget

Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:

template_name

gis/openlayers-osm.html

default_lat
default_lon

Центральная широта и долгота по умолчанию — «47» и «5» соответственно, это местоположение на востоке Франции.

default_zoom

Масштаб карты по умолчанию — «12».

Примечание OpenLayersWidget о хостинге файлов JavaScript, приведенное выше, также применимо и здесь. См. также ответ на часто задаваемые вопросы о доступе по протоколу https к фрагментам карты.

Back to Top