将 Javascript 值解析为 Django 视图
Posted
技术标签:
【中文标题】将 Javascript 值解析为 Django 视图【英文标题】:Parsing Javascript values to Django views 【发布时间】:2018-07-23 06:12:37 【问题描述】:我是 Django 的新手,我只是想弄清楚,我确实在官方 Django 谷歌组中发布了它,但没有答案。我正在我的 Django 模板中为 GeoLocation 使用 Google Map API,我打算在从我的 Django 模板中的 javascript 提取信息后动态填充数据库表。以下是代码:
var map, infoWindow;
function initMap()
map = new google.maps.Map(document.getElementById('map'),
center: lat: -34.397, lng: 150.644,
zoom: 6
);
infoWindow = new google.maps.InfoWindow;
// Try html5 geolocation.
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(function(position)
var pos =
lat: position.coords.latitude,
lng: position.coords.longitude
;
infoWindow.setPosition(pos);
infoWindow.setContent('Location found.');
infoWindow.open(map);
map.setCenter(pos);
, function()
handleLocationError(true, infoWindow, map.getCenter());
);
else
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
function handleLocationError(browserHasGeolocation, infoWindow, pos)
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn\'t support geolocation.');
infoWindow.open(map);
我需要在我的模型中以人类可读格式保存有关位置的 GeoLocation 信息的经度和纬度。我的模型是
class Address(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
latitude = models.CharField(max_length=10)
longitude = models.CharField(max_length=10)
address = models.CharField(max_length=100)
.....
我的表格是:
class UserAddressForm(forms.ModelForm):
class Meta:
model = Address
fields = ['latitude', 'longitude', 'address'
我需要在我看来如何做到这一点。 如果有人可以向我推荐正确的方向,那就太好了,因为作为新手我真的很难弄清楚。
【问题讨论】:
【参考方案1】:我没有足够的声誉来评论为什么我试图回答我从中理解的内容,请不要介意
我在进行实时外汇数据流显示时遇到了同样的问题。你可以做一件事。我所做的是反向方法(我不知道该怎么做)。
-
使用 Google api 编写一个 python 脚本来访问这些详细信息
并收集它。
将其存储在数据库中。然后通过 Django-restframework 将此数据传递给模板
您现在可以在 js 中访问这些数据了。
您可以使用 set-interval 函数进行 ajax 调用 每隔一段时间刷新一次。 如果您这样做,它将在每个特定间隔调用您的视图函数,因此它将通过模型保存在数据库中并显示在模板中。
我希望它有所帮助。
【讨论】:
我没有找到任何示例,我尝试了自己的示例并且它有效。我的目标是从 db 中的 truefx 和哑数据中抓取数据,然后在模板中显示为表格。【参考方案2】:def fx(request):
#template = loader.get_template('fx.html')
template = loader.get_template('fx.html')
fj = fxdata()
r0 = fj[0]
r1 = fj[1]
r2 = fj[2]
r3 = fj[3]
r4 = fj[4]
r5 = fj[5]
r6 = fj[6]
# context = "Symbol": sym, "Time":time, "Ask":ask, "Bid":bid,"High":high,"low":low,"Close":close
context = "R0":r0, "R1":r1, "R2":r2, "R3":r3, "R4":r4, "R5":r5, "R6":r6
for key, index in context.items():
a=context[key]
forex_instance = forex.objects.create(symbol=str(a[0]),datetime = str(a[1]), ask = float(a[2]), bid = float(a[3]), high = float(a[4]),low = float(a[5]), close=float(a[6]) )
html = template.render(context)
return HttpResponse(html)
在这个视图函数fj = fxdata()
返回一个抓取数据并存储在db中
同时我试图在我的模板中显示这些数据,所以我使用了html = template.render(context)
我通过 HttpResponse
然后我使用 setInterval 在同一模板上使用 div id 进行了 Ajax 调用。
所以它开始刷新模板。每次刷新时都会调用视图函数。数据也继续存储在数据库中。
然后我使用 Django rest-framework 将这些数据导出到 JS
【讨论】:
以上是关于将 Javascript 值解析为 Django 视图的主要内容,如果未能解决你的问题,请参考以下文章