使用 Folium 实现的 Django 地图应用程序

简介: 使用 Folium 实现一个简单的 Django 地图应用程序

前言

今天,发现了一个非常有趣的Python地图应用程序


程序使用 Django 框架和 folium 库,可以简单快速的实现,只要插入数据就可以找到任何地方,并得到其所在地址。


实现过程


前提


  1. 已安装配置Python环境
  2. 安装并构建app项目
pip install django 
pip install folium 
django-admin startproject maps_project


实现过程


  1. setting.py‘INSTALLED_APPS’ 中app的名称
INSTALLED_APPS = [ 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
django.contrib.messages', 'django.contrib.staticfiles', 'maps', ]


  1. models.py中创建使用的对象模型
fromdjangoimportformsfromdjango.formsimportModelFormfrom .modelsimport*classCoordinatesForm(forms.ModelForm):
lat=models.CharField(max_length=20)
lon=models.CharField(max_length=20)
classMeta:
model=Coordenadasfields='__all__'


  1. admin.py 中注册模型
fromdjango.contribimportadminfrom .modelsimport*admin.site.register(Coordenadas)


  1. 创建 forms.py,使用djangoModelForm特性来实现表单处理
fromdjangoimportformsfromdjango.formsimportModelFormfrom .modelsimport*classCoordinatesForm(forms.ModelForm):
lat=models.CharField(max_length=20)
lon=models.CharField(max_length=20)
classMeta:
model=Coordenadasfields='__all__'


  1. 实现相关请求的处理 view.py
fromdjango.shortcutsimportrender, redirectfrom .modelsimportCoordenadasfrom .formsimport*importfoliumdefcoordinates_form(request):
coordinates=Coordenadas.objects.all()
form=CoordinatesForm()
ifrequest.method=='POST':
form=CoordinatesForm(request.POST)
ifform.is_valid():
form.save()
returnredirect("maps")
context= {
'coordinates': coordinates,
'form' : form,
       }
returnrender(request, 'maps/maps_form.html', context)
defmaps(request):
coordenadas=list(Coordenadas.objects.values_list('lat','lon'))[-1]
map=folium.Map(coordenadas)
folium.Marker(coordenadas).add_to(map)
folium.raster_layers.TileLayer('Stamen Terrain').add_to(map)
folium.raster_layers.TileLayer('Stamen Toner').add_to(map)
folium.raster_layers.TileLayer('Stamen Watercolor').add_to(map)
folium.LayerControl().add_to(map)
map=map._repr_html_()
context= {
'map': map,
    }
returnrender(request, 'maps/maps.html', context)


  1. 配置 urls.py,导入相关视图
fromdjango.contribimportadminfromdjango.urlsimportpathfrom . importviewsurlpatterns= [
path('',views.coordinates_form, name='coordinates-form'),
path('map', views.maps, name='maps'),
  ]
  1. 页面展示代码 maps.html


<!DOCTYPE html><htmllang="en">      {% block content %}
<head><metacharset="UTF-8"><title>Map</title></head><body><div> {{ map | safe }}</div></body></html>       {% endblock %}


8.表单页面 map_form.html


{% extends 'maps/base.html' %}
{% block content %}
<divclass="header-bar"><ahref="{% url 'maps' %}">&#8592; Map</a></div><divclass="card-body"><formmethod= "POST"action ="">         {% csrf_token %}
         {{form.as_p}}
<inputclass="button"type="submit"value="submit"></form></div>{% endblock %}

9.启动项目


python manage.py startapp maps


然后打开浏览器172.0.0.1:8000 即可访问


实现效果


网络异常,图片无法展示
|


网络异常,图片无法展示
|

目录
相关文章
|
2月前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
96 1
|
29天前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
108 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
2月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
155 0
|
2月前
|
存储 开发框架 JSON
【查漏补缺】Django模型字段类型及其应用
【查漏补缺】Django模型字段类型及其应用
30 0
|
2月前
|
存储 安全 UED
GitHub OAuth认证的Django应用
GitHub OAuth认证的Django应用
28 0
|
4月前
|
中间件 数据库连接 UED
Django中间件秘籍:如何用几行代码让你的应用变得超级强大?
【8月更文挑战第31天】中间件是Django框架的核心特性,位于视图与HTTP服务器之间,允许全局处理请求和响应,增强Web应用功能。通过实现`MiddlewareMixin`类的方法,如`process_request`和`process_response`,可以轻松实现请求预处理或响应后处理。中间件应用场景广泛,包括用户认证、CSRF防护和数据库连接管理等。创建并配置中间件需将其加入`settings.py`的`MIDDLEWARE`列表,顺序决定执行优先级。合理利用中间件能提高代码重用性和应用性能,带来更好的用户体验。
57 0
|
4月前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
5月前
|
前端开发 JavaScript API
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
【7月更文挑战第17天】现代Web开发趋势中,前后端分离配合WebSocket满足实时通信需求。Django Channels扩展了Django,支持WebSocket连接和异步功能。通过安装Channels、配置设置、定义路由和消费者,能在Django中实现WebSocket交互。前端使用WebSocket API连接后端,实现双向数据流,如在线聊天功能。集成Channels提升Web应用的实时性和用户体验,适应实时交互场景的需求。**
226 6
|
6月前
|
API 数据安全/隐私保护 网络架构
在django3中配置应用的权限
【6月更文挑战第9天】该文档介绍了Django REST Framework的权限管理。总结来说,本文介绍如何设置严格项目权限和如何通过自定义权限控制对特定资源的访问。
60 10
在django3中配置应用的权限