带有mapinput小部件的位置字段,用于选择某个位置

django-mapbox-location-field的Python项目详细描述


Django Mapbox位置字段

Build StatusCoverage StatusPyPI


使用简单的location模型和表单字段mapinput小部件来选择某个位置。使用mapbox gl js,灵活的地图提供程序API。与bootstrap框架完全兼容。


目录

为什么这样?

我正在搜索一些django位置字段,它使用mapbox,我可以在我的项目中使用。我没有找到任何适合我100%需要的东西,这就是为什么我创建了这个简单的django应用程序。我的哲学很简单,但我想创建一个完整的解决方案来选择位置。

请随意打开问题,提出请求并请求一些功能或说明。如果你认为这是不灵活的,请告诉我。

兼容性

在Travis CI上自动测试版本:

  • Django 1.11、2.0、2.1、2.2
  • 巨蟒3.5、3.6、3.7

Django1.11不再支持Python3.7。

浏览器支持

django mapbox location字段支持所有浏览器,由mapbox gl js支持。阅读更多here

现场演示

好奇它的工作原理和外观?观看https://django-mapbox-location-field.herokuapp.com上的现场演示 demo应用程序使用django-bootstrap4来获得外观更好的表单字段。

安装

使用PIP: pip install django-mapbox-location-field

配置

  • "mapbox_location_field"添加到设置文件中的INSTALLED_APPS
INSTALLED_APPS+=("mapbox_location_field",)
  • 在设置文件中定义MAPBOX_KEY。这是易受攻击的信息,必须传递给前端,因此用户可以很容易地访问它。为了确保您的安全,我建议您使用url restrictionspublic scopes。有关链接网站的详细信息。
MAPBOX_KEY="pk.eyJ1IjoibWlnaHR5c2hhcmt5IiwiYSI6ImNqd2duaW4wMzBhcWI0M3F1MTRvbHB0dWcifQ.1sDAD43q0ktK1Sr374xGfw"

ps。以上只是访问令牌的示例。您必须粘贴到这里。

用法

  • 用locationfield创建一个模型。
fromdjango.dbimportmodelsfrommapbox_location_field.modelsimportLocationFieldclassSomeLocationModel(models.Model):location=LocationField()
  • 创建模型窗体
fromdjangoimportformsfrom.modelsimportLocationclassLocationForm(forms.ModelForm):classMeta:model=Locationfields="__all__"

当然,您也可以使用createview、updateview或使用mapbox\u location\u field.forms.locationfield自己构建表单

  • 然后在html视图中使用它。再简单不过了! 将此粘贴到HTML头中:
{%loadmapbox_location_field_tags%}{%location_field_includes%}{%include_jquery%}
  • 你身体里的这个:
   <form method="post">{%csrf_token%}{{form}}        <input type="submit" value="submit">    </form>{{form.media}}
  • 你的表格准备好了!打开你的网站,看看它看起来怎么样。如果要更改某些内容,请查看customization部分。

定制

为了改变一些事情,你必须使用map_attrs字典。 默认值map_attrs如下:

default_map_attrs={"style":"mapbox://styles/mapbox/outdoors-v11","zoom":13,"center":[17.031645,51.106715],"cursor_style":'pointer',"marker_color":"red","rotate":False,"geocoder":True,"fullscreen_button":True,"navigation_buttons":True,"track_location_button":True,"readonly":True,"placeholder":"Pick a location on map below",}

若要更改某些值,请在创建模型时传递它。

fromdjango.dbimportmodelsfrommapbox_location_field.modelsimportLocationFieldclassLocation(models.Model):location=LocationField(map_attrs={"center":[0,0],"marker_color":"blue"})

地图属性

  • 样式-<string>,映射框样式url。阅读更多here
  • 缩放-<int>,地图的缩放。阅读更多here
  • 位于<float>s的<list><tuple>中心,默认地图的中心点位于latitudelongitude
  • 光标样式-<string>,css光标样式。阅读更多here
  • 标记颜色-<string>css颜色属性。阅读更多herehere
  • 旋转-<bool>,无论您是否可以用鼠标右键旋转地图。
  • 地理编码器-<bool>,无论是否显示地理编码器搜索器。
  • 全屏按钮-<bool>,无论是否显示全屏按钮。
  • 导航按钮-<bool>,无论是否显示导航按钮。
  • 跟踪位置按钮-<bool>,无论是否显示“显示我的位置”按钮。
  • 只读-<bool>,用户是否可以在文本输入中键入位置
  • 占位符-<string>,文本输入的占位符

引导

mapinput小部件与引导库完全兼容。我甚至可以推荐与django-bootstrap4django-crispy-forms一起使用。

管理界面使用

首先创建一些带有位置字段的模型,如usage section。 然后在管理界面中注册,如下所示:

fromdjango.contribimportadminfrom.modelsimportLocationfrommapbox_location_field.adminimportMapAdminadmin.site.register(Location,MapAdmin)

在上面的示例中,location是模型的名称。 来自customization section的所有内容也可以在管理界面中工作。

地址自动隐藏字段

addressAutoHiddenField是用于存储地址的字段。它使用addressautohiddeninput,它是隐藏的,当您将您的标记放在地图上时,会自动用正确的地址填充自己。 为了使用它,只需将它添加到您的模型中。像这样:

classLocation(models.Model):location=LocationField()address=AddressAutoHiddenField()

技术

  • Django
  • 地图框gl js
  • jquery
  • HTML和CSS

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java过滤会导致JPQL查询   java中的部署控制台   java检索列表内部映射的值   从java堆收集旧对象的垃圾收集   java在运行时向JTable追加新行   很简单的构造函数问题,我就是搞不懂。JAVA   基于IVONA-TTS的java文本语音识别   java将数据保存到数组更高效的代码   java在文件中逐字读取   java在Eclipse中运行两个安卓设备实例   Java兼容性编译模式   java我可以使用SendGrid向多个用户发送电子邮件吗?   java Android:FusedLocationProvider,每隔几秒钟获取一次位置   java在具有并行性限制的惰性流上应用方法   多线程如何使多线程应用程序在java中分布?   java将自定义数据源添加到Jaspersoft Studio   java如何对方法执行post请求返回整数