API GeoDjango Forms ¶
GeoDjango предоставляет несколько специализированных полей форм и виджетов для визуального отображения и редактирования геолокализованных данных на карте. По умолчанию они используют карты с поддержкой OpenLayers , а базовый слой WMS предоставляется НАСА .
Аргументы поля ¶
В дополнение к обычным аргументам поля формы, поля формы GeoDjango принимают следующие необязательные аргументы.
Классы полей формы ¶
Виджеты форм ¶
Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных в настоящее время виджетов не поддерживает трехмерную геометрию, поэтому поля геометрии будут откатываться с использованием Textarea
виджета для таких данных.
Атрибуты виджета ¶
Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от атрибутов других виджетов Django.
-
BaseGeometryWidget.
geom_type
¶ Тип геометрии OpenGIS, обычно задается полем формы.
-
BaseGeometryWidget.
map_height
¶
-
BaseGeometryWidget.
map_width
¶ Высота и ширина карты виджетов (по умолчанию 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
-
класс
BaseGeometryWidget
¶ Это абстрактный базовый виджет, содержащий логику, необходимую для подклассов. Вы не можете напрямую использовать этот виджет для геометрического поля. Обратите внимание, что рендеринг виджетов GeoDjango основан на шаблоне, определяемом
template_name
атрибутом класса.
OpenLayersWidget
-
класс
OpenLayersWidget
¶ Это виджет по умолчанию, используемый всеми полями формы GeoDjango.
template_name
естьgis/openlayers.html
.OpenLayersWidget
иOSMWidget
использоватьopenlayers.js
файл, размещенный вcdnjs.cloudflare.com
сети доставки контента. Вы можете создать подклассы этих виджетов, чтобы указать собственную версиюOpenLayers.js
файла вjs
свойстве внутреннегоMedia
класса (см. « Активы как статическое определение» ).
OSMWidget
-
класс
OSMWidget
¶ Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:
-
template_name
¶ gis/openlayers-osm.html
-
default_lat
¶
-
default_lon
¶ Центральная широта и долгота по умолчанию -
47
и5
соответственно, что соответствует местоположению на востоке Франции.
-
default_zoom
¶ По умолчанию масштаб карты равен
12
.
OpenLayersWidget
Примечание о JavaScript файлообменника выше , также применяется здесь. См. Также ответ на часто задаваемые вопросы оhttps
доступе к фрагментам карты.-