将值从html模板传递给Django中的views.py

时间:2019-12-05 19:04:38

标签: python django geodjango

能否解决我遇到的问题? 基本上,我遵循了在线教程,以创建一个基于位置的应用程序,该应用程序显示用户所在位置周围的商店。但是,用户的经度和纬度被硬编码在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);
 }

1 个答案:

答案 0 :(得分:1)

无法在未进行网络请求的情况下将django和视图单独渲染/发送给客户端后读取html内容。

您必须使用网络与视图进行通信,所以您可以让一些JS向视图发送请求,也可以查看django websocket和通道。

https://channels.readthedocs.io/en/latest/

您还可以使用ajax或如本答案中先前所述使用request模块并执行例如POST请求。