将 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 视图的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 对象解析为 Django 模板

javascript中的Django模板值

如何将 javascript 函数的值传递给 Django 视图?

django框架下的JSON解析

Javascript Nan 错误:将字符串解析为整数

如何使用javascript以编程方式(单击按钮)为django-select2字段设置值?