0

当我使用 django 测试服务器测试笔记本电脑上的所有内容时,django 地理定位小部件会显示在管理员中。但是,当我将所有内容放到生产服务器上时,没有显示地图,也没有显示纬度和经度标签。两种设置都使用 django == 2.1.7 和 geoposition == 0.3.0。生产服务器由 nginx 和 gunicorn 提供服务。

我打开浏览器检查窗口,结果发现 geoposition.js 在调用 jQuery 之前由 django 提供服务。所以我尝试直接在geoposition.js文件中调用jQuery,但是还是没有widget。然后我将所有内容恢复到原始阶段,现在我在 admin.py 的媒体类中包含 js = (setting.STATIC_URL + 'geoposition/geoposition.js")。这导致两个地图出现在我的测试服务器中,但我的生产服务器中仍然没有地图。我添加了一个 if 语句,以便在未加载 jQuery 时它不会运行,因此在第一个 geoposition.js 提供服务时没有 jQuery 错误。我添加了一些 console.log() 语句文件,所以我可以看到它在哪里,它进入主函数很好,但没有进入 $('.geopostion-widget').each(function() ...

当我查看 html 时,地图以及纬度和经度值都包含在 class = "geoposition-widget" 的 div 中,但是我的生产服务器中没有这样的 div,这对于为什么 '.geopostion-小部件的功能没有做任何事情。它似乎在我的测试服务器上自动放入该 div,它应该这样做,但不是在我的生产服务器上。

关于为什么会发生这种情况的任何线索?我是否只需要在我的生产服务器上为管理员创建一个自定义表单并将该字段包装在一个带有 class = '.geopostion-widget' 的 div 中?这似乎有点笨拙,因为它在我的测试服务器上运行良好。还是它与 gunicorn 和 nginx 的服务方式有关?

4

1 回答 1

0

在 github 上找到答案 - https://github.com/philippbosch/django-geoposition/issues/83

imdario 在底部的回答解决了它。使用“pip install django-geoposition-2”将地理定位包升级到 imdario 的地理定位包,瞧——它可以工作了。

于 2019-06-15T14:45:05.940 回答