您能帮我解决我遇到的问题吗?基本上,我遵循了在线教程,以创建一个基于位置的应用程序,该应用程序显示用户所在位置周围的商店。但是,用户的经度和纬度被硬编码在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);
}
无法将django和视图单独呈现为HTML内容,将其呈现/发送给客户端后无需进行网络请求就可以。
您必须使用网络与视图进行通信,因此您可以让一些JS向视图发送请求,也可以查看django websocket和通道。
https://channels.readthedocs.io/en/latest/
您还可以使用ajax或如本答案中先前所述使用request模块并执行例如POST请求。