Python Django-将js变量传递给Django视图
我的问题与谷歌地图JavaScript API有关。更具体的是自动完成功能 我已经在我的测试站点中添加了自动完成功能作为搜索栏,效果很好,但是现在我想将选择的参数传递给Django视图。我被困在这里了 这是我的模板中的内容:Python Django-将js变量传递给Django视图,python,django,google-maps-api-3,Python,Django,Google Maps Api 3,我的问题与谷歌地图JavaScript API有关。更具体的是自动完成功能 我已经在我的测试站点中添加了自动完成功能作为搜索栏,效果很好,但是现在我想将选择的参数传递给Django视图。我被困在这里了 这是我的模板中的内容: <script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script> <script type="text/javas
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
});
</script>
<form method="post" action="">{% csrf_token %}
<input id="searchTextField" type="text" placeholder="Enter a location" autocomplete="on">
<input type="submit" value="Search" class="postfix button"/>
</form>
我想做的是在Django视图中将变量“place”传递给变量“location”(变量位置应该包含lat和lon,我想在Geodjango中进一步使用它)。request.POST
给出了以下内容:
,但我不能使用它
是否可以将var place的内容传递给django视图
谢谢你的反馈
编辑:
我目前使用geopy的解决方法:
模板:
<input id="searchTextField" name="searchTextField" type="text" placeholder="Enter a location" autocomplete="on">
仍在寻找访问
脚本中变量位置的方法。这可能吗?首先在搜索输入中添加一个名称属性。假设您将其命名为searchTextField
,就像id
一样。然后您可以执行request.POST.get('searchTextField')
Thx以获得回复。事实上,昨天晚上,我根据字段的名称构建了一个变通方法。查看我的更新。但是仍然在寻找一种方法来访问脚本中的变量位置
@katylavalelee。我有一个类似的问题。我在view.py中有一个函数,比如“def home(request)”。现在我想访问“static/DjangoApp/DjangoApp.js”中的变量/值。我知道通过如下方式呈现页面来访问html页面上的值:return render(请求'search\u bar/home.html',{'table':table\u name})。但是我们如何在.js页面上访问值。任何提示都会非常明显。@girijesh96通常您会通过Javascript提交表单。我对Google的自动完成输入了解不够,不知道你是否可以将其作为一个普通的HTML表单发布。@girijesh96同样,你看到了关于原始问题的第一条评论了吗?您可以创建一个隐藏字段,并使用javascript将该字段的值设置为自动完成框中的值。创建一个隐藏字段,并使用javascript将其值设置为place
;并在表单的提交按钮上使用jquery触发填充。您需要使用javascript将place值获取到表单中,然后当您提交表单时,它将被发送到Django视图,您可以通过相同的方式访问它request.POST.get('place')
.Thx获取回复。添加我添加的脚本的结尾:document.getElementById('place')。value=autocomplete.getPlace()在表单中插入了一个额外的输入字段:
。但字段place
的值仍为空。这是因为在提交表格之前未计算var位置
?
<input id="searchTextField" name="searchTextField" type="text" placeholder="Enter a location" autocomplete="on">
if request.method == 'POST':
location = request.POST.get('searchTextField')
gn = geocoders.Google()
place, (lat, lng) = gn.geocode(location)