能否解决我遇到的问题? 基本上,我遵循了在线教程,以创建一个基于位置的应用程序,该应用程序显示用户所在位置周围的商店。但是,用户的经度和纬度被硬编码在views.py中。
views.py
from django.http import request, HttpResponse
from django.views import generic
from django.contrib.gis.geos import Point
from django.contrib.gis.db.models.functions import Distance
from .models import Shop
longitude = 10.113
latitude = -2.231
user_location = Point(longitude, latitude, srid=4326)
class Home(generic.ListView):
model = Shop
context_object_name = 'shops'
queryset = Shop.objects.annotate(distance=Distance('location',
user_location)
).order_by('distance')[0:15]
template_name = 'shops/index.html'
我在模板中添加了Leaflet集成,因此现在我可以访问用户的纬度和经度变量,我需要将其传递回views.py并在那里进行更新。通常有可能吗?您将为此采取什么解决方案? 非常感谢您的帮助
index.html
map.locate({setView: true, maxZoom: 16});
function onLocationFound(e)
{
var radius = e.accuracy;
var lat = e.latlng.lat;
var lon = e.latlng.lng;
L.marker(e.latlng).addTo(map)
.bindPopup("You are within " + radius + " meters from this point"+ +lat+lon).openPopup();
L.circle(e.latlng, radius).addTo(map);
}
答案 0 :(得分:1)
无法在未进行网络请求的情况下将django和视图单独渲染/发送给客户端后读取html内容。
您必须使用网络与视图进行通信,所以您可以让一些JS向视图发送请求,也可以查看django websocket和通道。
https://channels.readthedocs.io/en/latest/
您还可以使用ajax或如本答案中先前所述使用request模块并执行例如POST请求。