django-geoposition 地图小部件未显示在我的生产服务器上的 django 管理员中,但它在我的测试服务器上运行良好
Posted
技术标签:
【中文标题】django-geoposition 地图小部件未显示在我的生产服务器上的 django 管理员中,但它在我的测试服务器上运行良好【英文标题】:The django-geoposition map widget is not showing up in the django admin on my production server, but it is working perfectly fine on my test server 【发布时间】:2019-10-23 01:47:58 【问题描述】:当我使用 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-widget' 功能没有做任何事情。它似乎在我的测试服务器上自动放入该 div,它应该这样做,但不是在我的生产服务器上。
关于为什么会发生这种情况的任何线索?我是否只需要在我的生产服务器上为管理员创建一个自定义表单并将字段包装在一个 div 中,其中包含 class= '.geopostion-widget'?这似乎有点笨拙,因为它在我的测试服务器上运行良好。还是它与 gunicorn 和 nginx 的服务方式有关?
【问题讨论】:
【参考方案1】:在 github 上找到答案 - https://github.com/philippbosch/django-geoposition/issues/83。
imdario 在底部的回答解决了这个问题。使用“pip install django-geoposition-2”将地理定位包升级到 imdario 的地理定位包,瞧——它可以工作了。
【讨论】:
以上是关于django-geoposition 地图小部件未显示在我的生产服务器上的 django 管理员中,但它在我的测试服务器上运行良好的主要内容,如果未能解决你的问题,请参考以下文章