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

问题描述 投票:1回答:1

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

python django geodjango
1个回答
1
投票

无法将django和视图单独呈现为HTML内容,将其呈现/发送给客户端后无需进行网络请求就可以。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.